python - 如何获得外部
问题描述
我只想输出外部 li 标签文本。
from bs4 import BeautifulSoup
html = BeautifulSoup("""
<ul>
<li><a href="#">B2B Marketing</a>
<ul>
<li><a href="offerings/b2bmarketing/outboundai.php"> Campagin </a></li>
<li><b>Inbound AI </b>Enrich inbound leads</a></li>
</ul>
</li>
<li>Marketing Data Analysis
<ul>
<li><a href="offerings/marketingdataanalysis/event360ai.php"><b>Event 360 AI </b></a></li>
</ul>
</li>
<li class="drop-down"><a href="#">Enrichment API</a>
</li>
</ul>
""")
print([i.text.strip() for i in html.findAll('li')])
输出是 html 内容的整个文本。
['B2B Marketing\n\n Campagin \nInbound AI Enrich inbound leads', 'Campagin', 'Inbound AI Enrich inbound leads', 'Marketing Data Analysis\n \nEvent 360 AI', 'Event 360 AI', 'Enrichment API\n\nAPI Technographics, Firmographics, Intent data', 'API Technographics, Firmographics, Intent data']
但
输出应该是: -
[
'B2B Marketing : Campagin, Enrich inbound leads',
'Marketing Data Analysis : Event 360 AI',
'Enrichment API'
]
请帮我解决这个问题
解决方案
这怎么样?
from simplified_scrapy.simplified_doc import SimplifiedDoc
html = '''<ul>
<li><a href="#">B2B Marketing</a>
<ul>
<li><a href="offerings/b2bmarketing/outboundai.php"> Campagin </a></li>
<li><b>Inbound AI </b>Enrich inbound leads</a></li>
</ul>
</li>
<li>Marketing Data Analysis
<ul>
<li><a href="offerings/marketingdataanalysis/event360ai.php"><b>Event 360 AI </b></a></li>
</ul>
</li>
<li class="drop-down"><a href="#">Enrichment API</a>
</li>
</ul>
'''
doc = SimplifiedDoc(html)
lis = doc.ul.lis
out = []
for li in lis:
if li.b and li.b.nextText():
li.removeElement('b')
name = li.firstText() if li.firstText() else li.a.text
tmp = ''
for l in li.lis:
tmp += l.text+','
if tmp:
out.append(name+':'+tmp[0:-1])
else:
out.append(name)
print (out)
结果:
['B2B Marketing:Campagin,Enrich inbound leads', 'Marketing Data Analysis:Event 360 AI', 'Enrichment API']
推荐阅读
- spring-boot - 使用 Kafka 消息传递和 Hazelcast 作为持久性提供者的 Apache Avro
- kotlin - 为什么 Kotlin Iterable 减号运算符只返回一个没有第一次出现单个元素操作数的结果?
- c - 在自定义 LinkedList 上查找重复节点通过递归引发分段错误
- amazon-s3 - AWS 上的 VM 导入给了我“ClientError:引导磁盘未使用 MBR 分区”。错误
- python - 在 python 中调整图像大小而不使用 resize() - 最近邻
- javascript - 使用 Jest 模拟返回函数的 node_modules?
- amazon-web-services - 在 y 轴上对堆叠图进行排序
- python - Python通过从正则表达式模式拆分来创建字符串元组列表
- html - 无法制作响应式搜索栏和下拉菜单
- sql-server - 为什么 Rank() OVER PARTITION 通过返回太多结果