Python 我正在尝试刮取两组

Python 我正在尝试刮取两组,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,数据:一组有数据,另一组没有,有没有排除select的方法? 显然,在我弄清楚如何提取html源代码的摘要部分后,我将对其进行循环。提前谢谢 假设每行始终有两个段落,而列中没有其他段落,您可以找到所有段落,然后取奇数和偶数: column = soup.find('div', id='column2_A415') date = column.h2.strong.text case = column.p.strong.text summary = ??? 现在,您有两个列表可用于构建数据帧。对于

数据:一组有数据,另一组没有,有没有排除select的方法?
显然,在我弄清楚如何提取html源代码的摘要部分后,我将对其进行循环。提前谢谢

假设每行始终有两个段落,而列中没有其他段落,您可以找到所有段落,然后取奇数和偶数:

column = soup.find('div', id='column2_A415')
date = column.h2.strong.text
case = column.p.strong.text
summary = ???

现在,您有两个列表可用于构建数据帧。

对于bs4 4.7.1+,您可以使用:has指定p has strong child,然后使用:not否定该列表,以获得那些不具有strong child的列表


阅读css伪类:not,:has:

您好,我是新手,您介意解释一下您的解决方案吗?我想我不明白。我想区分提取“案例”和“摘要”。谢谢你的耐心因为你改变了你的问题,我不得不改变答案。看上面。难以置信!!最后一件事:如何迭代“日期”?感谢您在VanceMaybe与h2:hasstrong合作
column = soup.find('div', id='column2_A415')
date = column.h2.strong.text
case = column.p.strong.text
summary = ???
all_para = [p.text for p in column.findAll('p')]
p1 = all_para[::2]
p2 = all_para[1::2]
from bs4 import BeautifulSoup as bs

html = '''<div id="column2_A415"> 
   <h2 class="content_header content_header_yellow"><strong>Date</strong></h2> 
   <p><strong>Case</strong></p> 
   <p>Summary</p> 
   <h2 class="content_header content_header_yellow"><strong>Date</strong></h2> 
   <p><strong>Case</strong></p> 
   <p>Summary</p>
  </div>'''

soup = bs(html, 'lxml') # 'html.parser'   
cases = [p.text for p in soup.select('p:has(strong)')]
summaries = [p.text for p in soup.select('p:not(:has(strong))')]
print('cases: ', cases, ' summaries: ', summaries)