使用beautifulsoup查找标头标签内的链接

时间:2014-09-15 05:13:26

标签: python web-scraping beautifulsoup

我试图收集位于页面上所有标签内的所有链接,并为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的基础,但我无法弄明白。提前谢谢。

1 个答案:

答案 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,那么只要抓住第一个元素就可以使代码更有效。