1

私は美しいスープを使ってデータを抽出しています。

私はそのようなhtmlファイルを持っています:

<div class=a>
<a href='google.com'>a</a>
</div>
<div class=b>
<a href='google.com'>c</a>
<a href='google.com'>d</a>
</div>

データ 'c,d' を抽出したいのですが、データ 'a' は必要ありません

私もです:

google_list = soup.findAll('a',href='google.com')
for item in google_list:
    print item.strings

a、c、dを出力します。だから私の問題は、「a」なしで「c」、「d」を印刷する方法です

4

2 に答える 2

4

div誰のクラスであるかに基づいて選択しb、その後、そのタグで元のクエリを使用して、その子を探すことができます。

div = soup.find_all('div', {"class":"b"})[0]
items = div.find_all('a', href="google.com")
于 2012-06-30T06:06:41.977 に答える
1

私は数年前に Beautifulsoup の使用をやめ、html パーサーが柔軟で xpath クエリも可能な lxml ライブラリーを好みます。

html = """<div class=a>
<a href='google.com'>a</a>
</div>
<div class=b>
<a href='google.com'>c</a>
<a href='google.com'>d</a>
</div>
"""
root = lxml.html.fromstring(html).getroottree()
root.xpath("//div[@class='b']/a[@href='google.com']/text()")
# ['c', 'd']

これにより、クラス「b」の div 内にある「google.com」を参照するすべてのアンカーからすべてのテキストが検索されます。

于 2012-06-30T07:02:03.707 に答える