次の一般的な形式を持つ BeautifulSoup を使用してページをスクレイピングしようとしています。
<span class="ID1"> TEXT </span>
<span class="ID2"> TEXT2 </span>
これらはすべて に格納される<div>
ため、一般的なコード テンプレートは次のようになります。
for tag in soup.find_all('div'):
print tag.find('span')
これにより、 内のすべての<span>
タグが表示されますdiv
が、 内を検索する方法がわかりません<span>s
。tag.find('class')
、 、 などを試しまし.find('ID')
たが、うまくいきません。
オブジェクトのこの文字列表現を取得し、探している ID があるかどうかをテストすることで、探しているものを手動で見つけることができますが、それは応急処置のようです。私が見ていないだけのものがあると確信しています。
find
注: ID の正規表現を関数 alaに渡すことも試みました。
for tag in soup.find_all('div'):
print tag.find(re.compile('id2'))
残念ながらまだ運がありません。
では、特定のクラス値を検索するにはどうすればよいでしょうか。
*EDIT [解決済み]
find
辞書構造を手動でチェックせずに、BeautifulSoup の組み込み関数を使用してそれを行う方法を見つけました。
この関数を使用して html タグ内のfind
特定のタグを選択するにはclass=value
、検索する一般的なタグ名を最初のパラメーターとして渡します (私の場合、それは '' タグの一部でした)。2 番目の引数として、検索する特定の辞書を渡し'class' : 'value'
ます。
たとえば、スクレイピングしたい HTML が次のような場合:
<div>
<span class="ID1"> TEXT </span>
<other HTML junk>
<span class="ID2"> TEXT2 </span>
</div>
以下のようなステートメントを使用できます。
for tag_elm in soup.find_all('div'):
print tag_elm.find('span', {'class' : 'ID2'})
多田!