无法在BeautifulSoup中获得正确的链接

时间:2010-07-23 08:11:53

标签: python beautifulsoup

我正在尝试解析一些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> &ndash; 
    <a target="_blank" href="http://www.imdb.com/title/tt1196141/">IMDB</a> &ndash; 
</div>
"""

soup = BeautifulSoup(html)
print soup.find('a', href = re.compile(r".*title/tt.*"))['href']

我应该得到第二个链接,但BS总是返回第一个链接。第一个链接的href甚至不匹配我的正则表达式,为什么它会返回它?

感谢。

2 个答案:

答案 0 :(得分:2)

find仅返回第一个<a>标记。你想要findAll

答案 1 :(得分:0)

无法回答您的问题,但无论如何您的(原始)发布的代码都有导入错误。变化

import BeautifulSoup

from BeautifulSoup import BeautifulSoup

然后,您的输出(使用beautifulsoup版本3.1.0.1)将是:

http://www.imdb.com/title/tt1196141/