【发布时间】:2016-07-06 15:35:26
【问题描述】:
我正在尝试从几千页中抓取数据。我的代码在大约 100 页上运行良好,但随后速度急剧下降。我很确定我的类似泰山的代码可以改进,从而提高网络抓取过程的速度。任何帮助,将不胜感激。蒂亚!
这里是简化的代码:
csvfile=open('test.csv', 'w', encoding='cp850', errors='replace')
writer=csv.writer(csvfile)
list_url= ["http://www.randomsite.com"]
i=1
for url in list_url:
base_url_parts = urllib.parse.urlparse(url)
while True:
raw_html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(raw_html, "lxml")
#### scrape the page for the desired info
i=i+1
n=str(i)
#Zip the data
output_data=zip(variable_1, variable_2, variable_3, ..., variable_10)
#Write the observations to the CSV file
writer=csv.writer(open('test.csv','a',newline='', encoding='cp850', errors='replace'))
writer.writerows(output_data)
csvfile.flush()
base="http://www.randomsite.com/page"
base2=base+n
url_part2="/otherstuff"
url_test = base2+url_part2
try:
if url_test != None:
url = url_test
print(url)
else:
break
except:
break
csvfile.close()
编辑:感谢所有的答案,我从他们身上学到了很多东西。我正在(慢慢地!)学习如何使用 Scrapy。但是,我发现这些页面可以通过批量下载获得,这将是解决性能问题的更好方法。
【问题讨论】:
-
如果您的代码可以运行,但还需要一些改进,那么代码审查论坛就是您的理想之选。 [codereview.stackexchange.com/questions/tagged/python]
-
啊,好吧,我不知道这个资源。谢谢,我会在那里发帖。
标签: python csv web-scraping beautifulsoup