【发布时间】:2020-06-17 02:14:26
【问题描述】:
我正在尝试抓取此维基百科页面的“事件”部分:https://en.wikipedia.org/wiki/2020。该页面没有最容易导航的 HTML,因为大多数标签不是嵌套的,而是同级的。
我想确保我抓取的唯一数据位于下面显示的两个 h2 标记之间。
这是精简的 HTML:
<h2> #I ONLY WANT TO SEARCH BETWEEN HERE
<span id="Events">Events</span>
</h2>
<h3>...</h3>
<ul>...</ul>
<h3>...</h3>
<ul>
<li>
<a title="June 17"</a> #My code below is looking for this, if not found it jumps to another section
</li>
</ul>
<h3>...</h3>
<ul>...</ul>
<h2> #AND HERE. DON"T WANT TO GO PAST HERE
<span id="Predicted_and_scheduled_events">Predicted_and_scheduled_events</span>
</h2>
如果不清楚,每个标签(span 除外)都是兄弟。如果两个 h2 标记之间存在日期,我的代码当前可以工作,但是如果日期不存在,它将转到页面的另一个部分以提取数据,这是我不想要的。
这是我的代码:
import sys
import requests
import bs4
res = requests.get('https://en.wikipedia.org/wiki/2020')
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text,"lxml")
todaysNews = soup.find('a', {"title": "June 17"}) #goes to date's stories
【问题讨论】:
-
BS 具有兄弟功能 - Going sideways。 BTW:BS 有很多有用的功能,值得阅读整个文档。
标签: python web-scraping beautifulsoup