我希望从以下HTML代码中提取第二个链接(即数字'2'的链接):
<div class="post-footers">
1 |<a href="index.html?page=2"> 2 </a>
|<a href="index.html?page=3"> 3 </a>
|<a href="index.html?page=4"> 4 </a>
</div>
所以我想把所有href
输出到一个列表中,然后在索引1处提取元素,如下所示:
tags = soup.find("div", class_="post-footer")
links = tags.get('href')
print links[1]
但它返回错误:
newtags.get('href', None)
AttributeError: 'NoneType' object has no attribute 'get'
这意味着标签结果为空。那么在代码中我哪里出错了?
谢谢,如果有人能够提供帮助:)
答案 0 :(得分:2)
试试这个,
尝试1
In [1]: tags = soup.find("div", class_ = "post-footers")
In [2]: links = [i.attrs['href'] for i in tags.findAll('a')]
In [3]: print links
结果1
['index.html?page=2', 'index.html?page=3', 'index.html?page=4']
您的代码中存在拼写错误。您使用post-footer
代替post-footers
。
尝试2
如果您使用href
作为True
,您将获得所有a
这样的内容,
In [28]: tags = soup.find("div", class_ = "post-footers")
In [31]: links = tags.find_all('a',href=True)
结果2
[<a href="index.html?page=2"> 2 </a>,
<a href="index.html?page=3"> 3 </a>,
<a href="index.html?page=4"> 4 </a>]
答案 1 :(得分:1)
试试这个:
您可以将RegEx与BeautifulSoup一起使用
import re
page2Link = soup.find_all(href = re.compile("(page=2)"))
print page2Link