BeautifulSoup无法获得正确的链接

问题描述:

我想解析一些HTML,我想提取匹配特定模式的链接。我使用正则表达式使用find方法,但它没有为我提供正确的链接。这是我的片段。有人能告诉我我做错了什么吗?BeautifulSoup无法获得正确的链接

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甚至不匹配我的正则表达式,为什么它会返回?

谢谢。

+0

我已经从BeautifulSoup导入BeautifulSoup更正。它不应该工作,如果没有。然后它返回第三个链接。我认为它工作正常。 – luc 2010-07-23 08:17:04

+0

由于某种原因,它似乎不起作用。它总是给出第一个链接 - 'http:// www.rottentomatoes.com/m/diary_of_a_wimpy_kid /' – 2010-07-23 08:42:55

+0

它也适用于我(BS v3.1.0.1)。,我得到第三个链接。你的版本是什么? – tokland 2010-07-23 13:17:47

find只返回第一<a>标签。你想要findAll

无法回答你的问题,但无论如何,你的(最初)发布的代码有一个输入错字。更改

import BeautifulSoup 

from BeautifulSoup import BeautifulSoup 

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

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

我的不好。在我的电脑上测试时,我的BS位于不同的位置,当我在这里复制粘贴编码时,我匆匆修改了“输入”,因此错误。我将进行编辑。问题仍然存在。它没有给我正确的链接。 – 2010-07-23 08:41:17