特定の属性のみを持つタグを検索する方法 - BeautifulSoup 質問する

特定の属性のみを持つタグを検索する方法 - BeautifulSoup 質問する

BeautifulSoup を使用して、検索する属性のみを含むタグを検索するにはどうすればよいでしょうか?

たとえば、すべての<td valign="top">タグを検索したいとします。

次のコード:raw_card_data = soup.fetch('td', {'valign':re.compile('top')})

必要なデータをすべて取得するだけでなく、<td>属性を持つタグも取得しますvalign:top

私も試してみましたがraw_card_data = soup.findAll(re.compile('<td valign="top">'))、何も返されませんでした(おそらく正規表現が間違っているため)

<td>BeautifulSoupで「属性が「valign:top」のみのタグを検索する」という方法があるかどうか疑問に思っていました。

アップデートたとえば、HTML ドキュメントに次の<td>タグが含まれているとします。

<td valign="top">.....</td><br />
<td width="580" valign="top">.......</td><br />
<td>.....</td><br />

<td>最初のタグ(<td width="580" valign="top">)だけを返したいのですが

ベストアンサー1

説明されているようにBeautifulSoup ドキュメント

以下を使用できます:

soup = BeautifulSoup(html)
results = soup.findAll("td", {"valign" : "top"})

編集 :

valign="top" 属性のみを持つタグを返すには、タグattrsプロパティの長さを確認します。

from BeautifulSoup import BeautifulSoup

html = '<td valign="top">.....</td>\
        <td width="580" valign="top">.......</td>\
        <td>.....</td>'

soup = BeautifulSoup(html)
results = soup.findAll("td", {"valign" : "top"})

for result in results :
    if len(result.attrs) == 1 :
        print result

返される結果:

<td valign="top">.....</td>

おすすめ記事