我正在使用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
,那又是什么?
答案 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]