基本上,我试图得到相同的结果下面的代码,但使用多。下面的代码是一个基本的网络爬虫,可以打印给定网站中的所有网址。我希望能够使用多个进程一次检查多个站点的新URL。我有一个单独的网页抓取脚本,它使用pool和apply_async一次刮取多个网站,但我从一个静态URL列表开始。然后我有这个脚本一次迭代一个站点,以获得一个完整的非重复URL列表。我无法弄清楚如何获得两全其美的好处。因为我的URL列表不是静态的(它被添加到新的URL被发现),我不知道如何来遍历它使用apply_async返回结果。网络爬虫多处理在Python 3
我读过左右,我觉得自己像队列可能对解决方案的关键,但我已经竭尽所能,并无法得到它的工作。对不起,蹩脚的解释。我对python仍然很陌生。有人可以帮忙吗?
import lxml.html
import requests
url = "http://www.frontiercouriers.com"
url_check = "frontiercouriers.com"
urls = [url]
visited = [url]
while len (urls) >0:
try:
site_open = requests.get(urls[0])
soup = lxml.html.fromstring(site_open.text)
urls.pop(0)
for href in soup.xpath('//a/@href'):
if 'http' in href:
site = href
elif href.startswith('/'):
site = str(url+href)
else:
site = str(url+'/'+href)
if url_check in site and site not in visited:
urls.append(site)
visited.append(site)
print (site)
except Exception as e:
print ("\n"+str(e))
print (urls[0])
urls.pop(0)
欣赏响应。但是Scrapy不只适用于Python 2?我希望能找出解决的办法在Python 3 – rhhrock
你是对的,scrapy不支持Python 3的是,如果蟒蛇2不适合你,我想你必须自己实现多进程的解决方案的选项...不一个简单的任务 –