HTML解析中的标签

时间:2013-06-20 14:48:36

标签: python html image beautifulsoup

我正在使用BeautifulSoup编写一个解析脚本,我在其中搜索页面中的所有img标签,只想抓取一定宽度的图片。

以下是标记的示例:

<img 
  alt="" 
  src="//upload.wikimedia.org/wikipedia/en/thumb/a/a9/Example.jpg/111px-Example.jpg"
  width="111"
  height="120"
/>

问题是并非所有img代码都具有width属性。我只想访问具有img属性的width代码。

到目前为止,我有以下几点:

images= soup.findAll("img")
listimages= []
for img in images:
    if img['width']!==None:
       listimages.append(img)

这似乎不起作用。似乎缺少width属性不会产生NoneType。那么,如果不是None,那又是什么?

2 个答案:

答案 0 :(得分:0)

BeautifulSoup提供了一种调用findAll()来处理此问题的方法:

soup.findAll("img", width=True)

从上面的链接:

  

特殊值True和None特别有意义。 True匹配具有给定属性的任何值的标记,None匹配给定属性没有值的标记。一些例子:

soup.findAll(align=True)
# [<p id="firstpara" align="center">This is paragraph <b>one</b>.</p>,
#  <p id="secondpara" align="blah">This is paragraph <b>two</b>.</p>]

[tag.name for tag in soup.findAll(align=None)]
# [u'html', u'head', u'title', u'body', u'b', u'b']

答案 1 :(得分:-1)

[img for img in soup.findAll("img") if "width" in img.attrs]