首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中使用BeautifulSoup获取带有内部<li>或其他标记文本的外部<li>标记

如何在python中使用BeautifulSoup获取带有内部<li>或其他标记文本的外部<li>标记
EN

Stack Overflow用户
提问于 2020-02-01 03:26:08
回答 1查看 118关注 0票数 1

我只想输出外部li标记文本。

代码语言:javascript
复制
  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内容的整个文本。

代码语言:javascript
复制
['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']

输出应为:-

代码语言:javascript
复制
  [
   'B2B Marketing : Campagin, Enrich inbound leads',
   'Marketing Data Analysis : Event 360 AI',
   'Enrichment API'
  ]

请帮我解决这个问题

EN

回答 1

Stack Overflow用户

发布于 2020-02-01 09:50:58

这怎么回事?

代码语言:javascript
复制
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)

结果:

代码语言:javascript
复制
['B2B Marketing:Campagin,Enrich inbound leads', 'Marketing Data Analysis:Event 360 AI', 'Enrichment API']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60010088

复制
相关文章

相似问题

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