我試圖創建一個webcrawler,它解析頁面上的所有html,抓取指定的鏈接(通過raw_input
),跟隨該鏈接,然後重複此過程指定的次數(一次再次通過raw_input
)。我能夠抓住第一個鏈接併成功打印出來。但是,我有問題「循環」整個過程,並且通常會抓住錯誤的鏈接。這是第一個鏈接與webcrawler鏈接出現問題
https://pr4e.dr-chuck.com/tsugi/mod/python-data/data/known_by_Fikret.html
(全面披露,這個問題涉及到分配的Coursera課程)
這裏是我的代碼
import urllib
from BeautifulSoup import *
url = raw_input('Enter - ')
rpt=raw_input('Enter Position')
rpt=int(rpt)
cnt=raw_input('Enter Count')
cnt=int(cnt)
count=0
counts=0
tags=list()
soup=None
while x==0:
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
# Retrieve all of the anchor tags
tags=soup.findAll('a')
for tag in tags:
url= tag.get('href')
count=count + 1
if count== rpt:
break
counts=counts + 1
if counts==cnt:
x==1
else: continue
print url
我不完全理解輸入。該網址非常清晰。但爲什麼這個位置和計數?另外你爲什麼要重做整個過程多次?你不是隻需要抓取頁面上的所有網址?通常你只需要加載一次頁面並獲得所有的標籤。你能詳細說明嗎? – DJanssens
對不起,如果我不清楚,我想webcrawler抓住網頁上的鏈接,例如,如果用戶輸入「位置」爲3,「計數」爲4,它會抓住第三個鏈接,然後輸入鏈接到urllib,解析該鏈接,獲取該頁面上的第三個鏈接,並循環4次,如「count」輸入中指定的那樣。 –
但是,你不需要加載頁面4次,對吧?您可以將解析的鏈接存儲爲列表,並只使用用戶指定的鏈接。 – DJanssens