我有很多 html 文件,我必须获取文件的完整标题。 标题标签位置不同:class="c6", class="c7"
我试过BeautifulSoup
for head_c6 in soup.find_all('span', attrs={'class': 'c6'}):
print(head_c6.get_text())
for head_c7 in soup.find_all('span', attrs={'class': 'c7'}):
print(head_c7.get_text())
但结果:
2017 年第三季度美国运通联合财报电话 session - 最终长度:
2016 年第 2 季度 Akamai Technologies Inc 电话 session - 最终 yield
这里是不同文件的样子:
文件 1
<div class="c4">
<p class="c5">
<span class="c6">
Q3 2017 American Express Co Earnings Call - Final
</span>
</p>
</div>
<div class="c4">
<p class="c5">
<span class="c7">
LENGTH:
</span>
<span class="c2">
11051 words
</span>
</p>
</div>
文件 2
<div class="c4">
<p class="c5">
<span class="c6">
Q2 2018 Akamai Technologies Inc
</span>
<span class="c7">
Earnings
</span>
<span class="c6">
Call - Final
</span>
</p>
</div>
文件 3
<div class="c4">
<p class="c5">
<span class="c6">
Q4 2018
</span>
<span class="c7">
Facebook
</span>
<span class="c6">
Inc
</span>
<span class="c7">
Earnings
</span>
<span class="c6">
Call - Final
</span>
</p>
我想要的是获取标题的全文:
2017 年第三季度美国运通联合财报电话 session - 最终
2018 年第 2 季度 Akamai Technologies Inc 财报电话 session - 最终
Facebook Inc 2018 年第 4 季度财报电话 session - 最终
最佳答案
使用正则表达式re
我已经更新了最后一个文件 html。您可以对其余文件执行相同的操作
from bs4 import BeautifulSoup
import re
data='''<div class="c4">
<p class="c5">
<span class="c6">
Q4 2018
</span>
<span class="c7">
Facebook
</span>
<span class="c6">
Inc
</span>
<span class="c7">
Earnings
</span>
<span class="c6">
Call - Final
</span>
</p>'''
soup=BeautifulSoup(data,'html.parser')
items=[item.text.strip() for item in soup.find_all('span', class_=re.compile("c"))]
stritem=' '.join(items)
print(stritem.replace('\n',''))
输出:
Q4 2018 Facebook Inc Earnings Call - Final
您也可以使用以下方式。
items=[item.text.strip() for item in soup.find_all('span', class_=re.compile("c6|c7"))]
stritem=' '.join(items)
print(stritem.replace('\n',''))
或尝试获取父标记文本。
from bs4 import BeautifulSoup
import re
data='''<div class="c4">
<p class="c5">
<span class="c6">
Q4 2018
</span>
<span class="c7">
Facebook
</span>
<span class="c6">
Inc
</span>
<span class="c7">
Earnings
</span>
<span class="c6">
Call - Final
</span>
</p>'''
soup=BeautifulSoup(data,'html.parser')
childtag=soup.find('span', class_=re.compile("c6|c7"))
parenttag=childtag.parent
print(parenttag.text.replace('\n',''))
关于python - 有没有办法找到类名并获取父标签的整个文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56127598/