基本上,我試圖得到相同的結果下面的代碼,但使用多。下面的代碼是一個基本的網絡爬蟲,可以打印給定網站中的所有網址。我希望能夠使用多個進程一次檢查多個站點的新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不適合你,我想你必須自己實現多進程的解決方案的選項...不一個簡單的任務 –