我有HTML数据,我想获取
标记之间的所有文本,并将其放入数据帧中以进行进一步处理。
但是我只希望
标记中位于这些标记之间的文本:
<div class="someclass" itemprop="text">
<p>some text</p>
</div>
使用BeautifulSoup,我可以很容易地在所有
标记之间获取文本。但是正如我说的,除非在这些标签之间,否则我不想要它。
答案 0 :(得分:1)
如果想要包含仅与特定类相关联的标签中的文本,可以使用BeautifulSoup使用attrs
属性指定那些特定类:
html = '''<div class="someclass" itemprop="text">
<p>some text</p>
</div>'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
tags = soup.find_all('div', attrs={'class': 'someclass'})
for tag in tags:
print(tag.text.strip())
输出:
some text
答案 1 :(得分:1)
如果您需要特定于表的解决方案,我会尝试类似的方法(如果您不这样做,则比较合适的答案是:
import lxml
from bs4 import BeautifulSoup
innerHTML = browser.execute_script("return document.body.innerHTML")
soup = BeautifulSoup(str(innerHTML.encode('utf-8').strip()), 'lxml')
# Identify the table that will contain your <div> tags by its class
table = soup.find('table', attrs={'class':'class_name_of_table_here'})
table_body = table.find('tbody')
divs = table_body.find_all(['div'], attrs={'class':['someclass']})
for div in divs:
try:
selected_text = div.text
except:
pass
print(selected_text)
答案 2 :(得分:0)
如果您要选择父级为p
的{{1}}并具有班级div
,则可以
someclass