我正在尝试解析一些HTML,并且我想提取与特定模式匹配的链接。我正在使用find
方法和正则表达式,但它没有得到正确的链接。这是我的片段。有人能告诉我我做错了吗?
from BeautifulSoup import BeautifulSoup
import re
html = """
<div class="entry">
<a target="_blank" href="http://www.rottentomatoes.com/m/diary_of_a_wimpy_kid/">RT</a>
<a target="_blank" href="http://www.imdb.com/video/imdb/vi2496267289/">Trailer</a> –
<a target="_blank" href="http://www.imdb.com/title/tt1196141/">IMDB</a> –
</div>
"""
soup = BeautifulSoup(html)
print soup.find('a', href = re.compile(r".*title/tt.*"))['href']
我应该得到第二个链接,但BS总是返回第一个链接。第一个链接的href
甚至不匹配我的正则表达式,为什么它会返回它?
感谢。
答案 0 :(得分:2)
find
仅返回第一个<a>
标记。你想要findAll
。
答案 1 :(得分:0)
无法回答您的问题,但无论如何您的(原始)发布的代码都有导入错误。变化
import BeautifulSoup
到
from BeautifulSoup import BeautifulSoup
然后,您的输出(使用beautifulsoup版本3.1.0.1)将是:
http://www.imdb.com/title/tt1196141/