2

我正在使用 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,那又怎样?

4

2 回答 2

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']
于 2013-06-20T15:03:36.837 回答
-1
[img for img in soup.findAll("img") if "width" in img.attrs]
于 2013-06-20T14:54:41.530 回答