Tdでいくつかのhrefを取得するために必要な構文に苦労しています。 table、tr、およびtd要素には、クラスまたはIDはありません。
この例でアンカーを取得したい場合、何が必要ですか?
<tr> <td> <a>.。
ありがとう
ドキュメントに従って、最初に解析ツリーを作成します。
import BeautifulSoup
html = "<html><body><tr><td><a href='foo'/></td></tr></body></html>"
soup = BeautifulSoup.BeautifulSoup(html)
次に、その中で検索します。たとえば、直接の親が<a>
である<td>
タグを検索します。
for ana in soup.findAll('a'):
if ana.parent.name == 'td':
print ana["href"]
このようなもの?
_from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
anchors = [td.find('a') for td in soup.findAll('td')]
_
これにより、提供するhtmlの各「td」内の最初の「a」が見つかります。 _td.find
_を微調整してより具体的にするか、各td内に複数のリンクがある場合はfindAll
を使用できます。
更新:ダニエレのコメントに関して、リストにNone
がないことを確認したい場合は、リスト内包表記を次のように変更できます。
_from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
anchors = [a for a in (td.find('a') for td in soup.findAll('td')) if a]
_
これは基本的に、td.find('a')
によって返される実際の要素があるかどうかを確認するためのチェックを追加するだけです。