使用python

时间:2019-01-05 01:23:51

标签: python html beautifulsoup

我有HTML数据,我想获取

标记之间的所有文本,并将其放入数据帧中以进行进一步处理。

但是我只希望

标记中位于这些标记之间的文本:

            <div class="someclass" itemprop="text">
                    <p>some text</p>
            </div>

使用BeautifulSoup,我可以很容易地在所有

标记之间获取文本。但是正如我说的,除非在这些标签之间,否则我不想要它。

3 个答案:

答案 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