我试图收集位于页面上所有标签内的所有链接,并为125页执行此操作。我创建了以下循环,但它没有获取任何链接,但它也没有给我任何错误消息。
for i in xrange(125,1,-1):
page = urllib2.urlopen("http://www.freedomworks.org/issue/budget-spending?page={}".format(i))
soup = BeautifulSoup(page.read())
snippet = soup.find_all('h3')
with io.open('FWurl.txt', 'a', encoding='utf8') as logfile:
for link in snippet.find_all('a'):
fulllink = link.get('href')
logfile.write(fulllink + "\n")
我认为这正是BeautifulSoup的基础,但我无法弄明白。提前谢谢。
答案 0 :(得分:1)
我认为问题是执行snippet.find_all
会抛出异常 - snippet
显然是ResultSet
对象,您需要遍历它才能实际访问每个h3元件。
我可以在将文件修改为:
后检索您要查找的数据with io.open('FWurl.txt', 'a', encoding='utf8') as logfile:
for i in xrange(125, 1, -1):
page = urllib2.urlopen("http://www.freedomworks.org/issue/budget-spending?page={}".format(i))
soup = BeautifulSoup(page.read())
snippet = soup.find_all('h3')
for h3 in snippet:
for link in h3.find_all('a'):
logfile.write(link.get('href') + "\n")
注意:我不确定是否超过一个' a'标记为' h3',所以我迭代h3.find_all('a')
只是为了安全。如果每a
只有一个h3
,那么只要抓住第一个元素就可以使代码更有效。