次の一般的な形式を持つ 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'})
多田!