【发布时间】:2018-02-26 09:41:28
【问题描述】:
我正在使用 urllib2、bsoup、csv...(Python 2.7)编写一个简单的 python 爬虫 我有一个 .csv 文件,其中存储了需要抓取的 url 链接。
从下面的代码中,我正在从链接中抓取特定数字,在该链接中它可以从网站上找到最多一个参与者,并且crawl(url) 函数像整个代码一样正常工作。
from bs4 import BeautifulSoup
import json, csv, urllib2, urllib, re, time, lxml
def crawl(url):
request = urllib2.Request(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36"})
response = urllib2.urlopen(request)
readd = response.read()
soup = BeautifulSoup(readd, "lxml")
response.close()
maxx = 0
if (soup.find("div", attrs={"class" : "attendees-placeholder placeholder"})):
exists = soup.find("div", attrs={"class" : "attendees-placeholder placeholder"})
nmb = exists.find("ul", "user-list")
numbe = nmb.find_all("li")
number = len(numbe)
if (number > maxx):
maxx = number
else:
number = 0
print maxx
urls = csv.reader(open('all_links_2017.csv'))
for url in urls:
crawl(url[0])
同时,它太慢了,因为我有大约 100000 个网址。 我尝试了许多多线程示例,但这不是我所期望的。 有什么办法可以改进这段代码,让它运行得更快吗? (即多线程、池...)
【问题讨论】:
标签: python multithreading csv web-scraping beautifulsoup