首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在BeautifulSoup中,如何在没有特定标记的情况下获得文本?

在BeautifulSoup中,如何在没有特定标记的情况下获得文本?
EN

Stack Overflow用户
提问于 2020-11-17 06:35:38
回答 2查看 328关注 0票数 1

我有一些html

代码语言:javascript
运行
复制
html = '''<span class="head">A</span>Explanation <span style="color: red;">1</span><span class="head">B</span>Explanation 2<span class="head">C</span>Explanation <span style="color: red;">3</span>'''
soup = BeautifulSoup(html)

现在我想把它分开

代码语言:javascript
运行
复制
head = ["A", "B", "C"]
contents = ["Explanation 1", "Explanation 2", "Explanation 3"]

我可以通过

代码语言:javascript
运行
复制
head = [i.get_text() for i in soup.select("span.head")]

但不知道如何提取内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-17 17:00:36

不幸的是,我的汉字不是它应有的,但这是我得到的:

代码语言:javascript
运行
复制
targets = soup.select('span.head')
heads = []
entries = []
for target in targets:
    entry = []
    heads.append(target.text)
    entry.append(target.next_sibling)
    if target.next_sibling.next_sibling.has_attr('style'):
        entry.append(target.next_sibling.next_sibling.text)
    entries.append(''.join(entry).strip().replace('\n\t',''))
print(heads)
print(entries)

输出:

代码语言:javascript
运行
复制
['東', '菄', '鶇']
['春方也〾說文曰動...爲人', '東風菜義見上注俗加艹', '鶇鵍鳥名美形出廣雅亦作?']

对吗?

票数 0
EN

Stack Overflow用户

发布于 2020-11-17 08:06:49

尝试使用zip()

代码语言:javascript
运行
复制
from bs4 import BeautifulSoup

html = '''<span class="head">A</span>Explanation <span style="color: red;">1</span><span class="head">B</span>Explanation <span style="color: red;">2</span>
'''

soup = BeautifulSoup(html, "html.parser")

contents = []
for tag1, tag2 in zip(
        soup.select('span.head'), soup.select('span:not(span.head)')):
    contents.append(tag1.next.find_next(text=True) + tag2.text)

print(contents)

输出:

代码语言:javascript
运行
复制
['Explanation 1', 'Explanation 2']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64870372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档