Python 使用beautifulsoup查找标题标记内的链接

Python 使用beautifulsoup查找标题标记内的链接,python,web-scraping,beautifulsoup,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 = sou

我正在尝试收集一个页面上所有标签中的所有链接,并对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建造的目的,但我无法理解。提前谢谢。

我认为问题在于执行
snippet.find_all
会引发异常--
snippet
显然是一个
结果集
对象,您需要对其进行迭代,以便实际访问每个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")
注意:我不确定每个“h3”是否有一个以上的“a”标记,所以为了安全起见,我迭代了
h3。查找所有('a')
。如果每个
h3
只有一个
a
,您可能只需抓住第一个元素(如果它存在的话),就可以提高代码的效率