3

pclass を持つすべてのタグを見つけようとしていますcolumn

<p class="column">This is a column</p>
<p class="column">More columns heh</p>

私はやってみました:

soup.find_all(class_='column')

戻った[]

それから私は試しました:

soup.find_all(attrs={'class': 'column'})

そして正しい結果を得ました。

これらの 2 つのステートメントは同一であるべきではありませんか? 違いは何ですか?

4

4 に答える 4

0

ステートメントはまったく同じであり、私はあなたの問題を再現することができませんでした:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('''<div>
... <p class="column">This is a column</p>
... <p class="column">More columns heh</p>
... </div>''')
>>> soup.find_all(class_='column')
[<p class="column">This is a column</p>, <p class="column">More columns heh</p>]
>>> import bs4
>>> bs4.__version__
'4.1.3'

class_引数はバージョン4.1.2で導入されたため、BeautifulSoupの最新バージョンを使用していることを確認してください。CSSクラスによる検索セクションから:

Beautiful Soup 4.1.2以降、キーワード引数を使用してCSSクラスで検索できますclass_

于 2013-01-20T23:01:18.050 に答える
0

あなたの投稿のような保存状況があり、CentOS python バージョンが 2.6.6 で、ヘルプ ドキュメントに BeautifulSoup 4.1.0 があることがわかりました。

「このドキュメントの例は、Python 2.7 と Python 3.2 で同じように動作するはずです。」

したがって、このリンクに従って、python 2.6 を 2.7 にアップグレードします。

http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/

アップグレードが終わったら、スープが綺麗になりました。

于 2014-06-18T10:55:04.770 に答える
0
>>> from bs4 import BeautifulSoup as BS
>>> soup = BS('''<p class="column">This is a column</p>
<p class="column">More columns heh</p>''')
>>> list1 = soup.find_all(class_='column')
>>> list2 = soup.find_all(attrs={'class': 'column'})
>>> list1 == list2
True

違いはありません。なぜうまくいかないのかわかりません。BeautifulSoup モジュールが古くなっている可能性がありますか? また、問題を再現できませんでした。

于 2013-01-21T04:08:59.433 に答える