Попытка webscraping с Python, обзор
я изучаю веб-скребок , и я сделал этот код, чтобы очистить его от ChemSpider, но он медленный, как я могу его улучшить?
from urllib.request import urlopen from bs4 import BeautifulSoup as soup search=input() def scrape_search(search): my_url="http://www.chemspider.com/Search.aspx?q="+str(search) uClient=urlopen(my_url) page_html=uClient.read() uClient.close() page_soup=soup(page_html,"html.parser") target=page_soup.findAll("div",{"class":"results-wrapper table"}) target=target[0] base_url="http://www.chemspider.com/Chemical-Structure." results=target.div.table.tbody.findAll("tr") scraped_data=[{"ID":None,"URL":None,"img_url":None,"Molecular Formula":None,"Molecular Weight":None,"Name":None} for i in range(0,len(results))] for i in range(0,len(results)): result=results[i].findAll("td") scraped_data[i]["ID"]=result[0].a.text.strip() scraped_data[i]["URL"]=base_url+str(scraped_data[i]["ID"])+".html" scraped_data[i]["img_url"]="http://www.chemspider.com/ImagesHandler.ashx?id="+str(scraped_data[i]["ID"])+"&w=250&h=250" scraped_data[i]["Molecular Formula"]=result[2].text.strip() names=result[2].findAll("<sub>") for name in names: scraped_data[i]["Molecular Formula"]+=str(name.sub).strip() scraped_data[i]["Molecular Weight"]=result[3].text.strip() scraped_data[i]["Name"]=scrape_id_page(base_url+str(scraped_data[i]["ID"])+".html") return scraped_data def scrape_id_page(url): uClient=urlopen(url) page_html=uClient.read() uClient.close() page_soup=soup(page_html,"html.parser") target=page_soup.findAll("span",{"id":"ctl00_ctl00_ContentSection_ContentPlaceHolder1_RecordViewDetails_rptDetailsView_ctl00_WrapTitle"}) return target[0].text.strip() print(scrape_search(search))
Что я уже пробовал:
как я могу улучшить свой код?
Скраппи быстрее, чем BeautifulSoup?