【问题标题】:Extracting only the bullet points after a 'strong' title from a website using python使用 python 从网站中仅提取“强”标题后的项目符号
【发布时间】:2017-07-20 07:37:32
【问题描述】:

我只想提取此webpage 中标题为“受访者在说什么……”下的项目符号。

我可以用这段代码实现它:

import requests
URL = 'https://www.instituteforsupplymanagement.org/about/MediaRoom/newsreleasedetail.cfm?ItemNumber=30655&SSO=1'

r = requests.get(URL)
page = r.text
from bs4 import BeautifulSoup
soup = BeautifulSoup(page, 'lxml')

strong_el = soup.find('strong',text='WHAT RESPONDENTS ARE SAYING …')
strong_el.find_all_next('li')[9]

但这里的问题是我必须知道列出了多少个要点(在这种情况下有 10 个。因此,它返回 [9] 之前的有效值)。即使不知道列出了多少要点,提取所有要点的最佳方法是什么?另外,我只需要文本而不需要 html。

【问题讨论】:

    标签: python regex parsing beautifulsoup python-requests


    【解决方案1】:

    您可以使用find_next_sibling 获取包含这些li 元素的strong 旁边的ul 元素。然后获取ul 的所有子元素,它们是li 元素:

    ul_tag = strong_el.find_next_sibling('ul')
    for li_tag in ul_tag.children:
        print li_tag.string
    

    【讨论】:

    • 我相信您想将print li_tag.text 更改为print li_tag.string 以获取没有<li> 标记的文本。就像现在一样,它将引发AttributeError
    【解决方案2】:

    你应该首先找到ul标签,它包含所有li标签

    In [3]: ul = strong_el.find_next('ul')
    
    In [4]: for li in ul.find_all('li'):
       ...:     print(li.text)
    

    出来:

    “Demand very steady to start the year.” (Chemical Products)
    “January revenue target slightly lower following a big December shipment month.” (Computer & Electronic Products)
    

    【讨论】:

      猜你喜欢
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2019-09-22
      相关资源
      最近更新 更多