python - BeautifulSoup 让 'span' 内容彼此相邻
问题描述
HTML 的一部分如下所示。我想提取“跨度”标签中的内容:
from bs4 import BeautifulSoup
data = """
<section><h2>Team</h2><ul><li><ul><li><span>J36</span>—<span>John</span></li><li><span>B56</span>—<span>Bratt</span></li><li><span>K3</span>—<span>Kate</span></li></ul></li></ul></section>
... """
soup = BeautifulSoup(data, "html.parser")
classification = soup.find_all('section')[0].find_all('span')
for c in classification:
print (c.text)
结果是:
J36
John
B56
Bratt
K3
Kate
但通缉:
J36-John
B56-Bratt
K3-Kate
除了以下内容之外,提取内容的正确 BeautifulSoup 方法是什么?谢谢你。
contents = [c.text for c in classification]
l = contents[0::2]
ll = contents[1::2]
for a in zip(l, ll):
print ('-'.join(a))
解决方案
你可以得到下一个兄弟标签。如果是破折号,它将与文本一起打印,否则将仅打印文本。
for c in classification:
if c.next_sibling:
print(c.text + str(c.next_sibling), end='')
else:
print(c.text)
推荐阅读
- python - 如果它们在被调用函数 @app.route 之外(在 Heroku 服务器上),则 Flask 会创建重复的对象
- javascript - 如何将谷歌验证码添加到该网站
- jquery - 过滤器上的 JQuery.Deferred 异常
- vue.js - 防止在 Vue 项目中嵌套 v-containers
- rabbitmq - rebar3 无法加载编译文件
- c - 程序不允许我在第二个 Fgets 行上输入单词
- swift - 如何在 Swift NSRegularExpression 中捕获单词边界?
- javascript - 如何使用来自没有循环的键数组的键创建对象?
- python - Python异常:如果引发特定异常,则执行代码,否则
- python - _rawpy.so 在 buildozer(linux) 中是 64 位而不是 32 位