1
私は、テキストの各単語のタグのクラスを教えてくれる関数を作成しようとしています。Beautifulsoup:各単語のクラス名を取得
私のHTMLは、このようなものです:私はループにのfindAll( 'スパンを持つすべてのスパンを試してみました
[["I", A], ["am", A], ["not", C], ["doing", B], ["a", B], ["great", B], ["job", B]]
:だから私はリストを返す関数を作成したいと思います
<p>
<span class="A">I am </span>
<span class="B"><span class="C"> not </span> doing a great job </span>
</p>
'、recursive = False)、子供がいる場合は各スパンをチェックして、私はいつもダブルスを取得します。 たとえば、私は "偉大な仕事をしていない"と "ない"を得るでしょう。
for p in p_tags:
my_tag_list = []
spans = p.findAll("span", recursive=False)
for s in spans:
text = s.text.split()
for t in text:
my_tag = []
my_tag.append(t)
my_tag.append(s["class"][0])
私はマニュアルを見てきましたが、私は私のテキストとその周りに直接スパンを取得する任意の方法を見つけるように見えることはありません。
from bs4 import BeautifulSoup
data = """
<p>
<span class="A">I am </span>
<span class="B"><span class="C"> not </span> doing a great job </span>
</p>"""
soup = BeautifulSoup(data, "html.parser")
result = []
for text in soup.p.find_all(text=True):
parent = text.parent
parent_class = parent["class"][0] if "class" in parent.attrs else ""
for word in text.split():
result.append([word, parent_class])
print(result)
:
は 種類あなたは、find_all(text=True)
経由でテキストノードを反復木を登ると.parent
のクラス属性を取得することができます