1

a-tag 文字列から正しい順序で「文字列」を抽出するための美しいスープ コマンドの組み合わせを探しています。

ソース 1: <a href="target" title="title">a-string <img alt="img-alt"> <span>span-string</span></a>

ターゲット 1: "a-string img-alt span-string"

ソース 2: <a href="target" title="title"><span>span</span> string <img alt="alt"></a>

ターゲット 2: "span-string a-string img-alt"

「find_all()」で子要素を取得し、「get_text()」でテキストを取得するのは簡単です。

異なる「文字列」の正しい順序を取得する方法は? または、a-string 内のすべての情報を順次解析するには?

4

3 に答える 3

0

これがあなたが探している答えだと思います...contentsメソッドはリストを返します

from BeautifulSoup import BeautifulSoup

s="""<a href="target" title="title">a-string <img alt="img-alt"> <span>span-string</span></a>"""
soup=BeautifulSoup(s)
z=soup.find("a")
print z.contents
于 2013-05-31T14:02:10.233 に答える
0

1 の場合:

import bs4
a = bs4.BeautifulSoup("""<a href="target" title="title">a-string <img alt="img-alt"> <span>span-string</span></a>""")
print(" ".join((a.find(text=True),a.find("img").attrs["alt"],a.find("span").text)))

2 の場合:

import bs4
a = bs4.BeautifulSoup("""<a href="target" title="title">a-string <img alt="img-alt"> <span>span-string</span></a>""")
print(" ".join((a.find("span").text, a.find(text=True), a.find("img").attrs["alt"])))

テキストのコンテンツと属性を混在させているため、必要なものを抽出する一般的な方法はないと思います。

a.find(text=True) ## Get first element text
a.findAll(text=True) ## Get a list of text elements from string
于 2013-05-31T14:01:03.743 に答える