我试图创建一个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