使用Beautiful Soup-family树解析HTML页面

时间:2013-06-26 02:18:08

标签: python html parsing tags beautifulsoup

我正在编写一个解析脚本,该脚本应该访问HTML页面中的“img”标签(我正在使用Beautiful Soup。) 我使用findAll方法来访问代码中的每个图像,但我还想访问另一条信息。我希望每个图像的标题位于href属性下的前一个“a”标记中。 HTML代码如下所示:

div class="thumbinner" style="width:202px;"><a href="/wiki/File:Edmund-Hillary.web.jpg" class="image">img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Edmund-Hillary.web.jpg/200px-Edmund-Hillary.web.jpg" width="200" height="272" class="thumbimage" srcset="//upload.wikimedia.........

我正在尝试使用来自美丽汤的父/子方法,但我遇到了错误。 我的代码看起来像:

images= soup.findAll("img", width=true)#access all image tags
jpegtitles= images.siblings['href']

我想,因为“img”标签和“a”标签都是“div”标签的子项,所以它们可以通过兄弟方法访问。

关于我如何访问的任何建议:href =“/ wiki / File:Edmund-Hillary.web.jpg” ??

1 个答案:

答案 0 :(得分:0)

由于图片代码位于<a>代码之后,您希望找到父代,而不是兄弟代码:

>>> soup.find('img', width=True).parent['href']
'/wiki/File:Edmund-Hillary.web.jpg'

您的代码的另一个问题是findAll会返回一个列表,因此您无法直接在其上调用.siblings。如果您有多个图像,请使用循环。