2

imgページ内のすべてのタグを検索し、特定の幅の画像のみを取得するBeautifulSoup を使用して解析スクリプトを作成しています。

タグの例を次に示します。

<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 に答える