如果HTML标记在:: bs4下之前如何提取文本

时间:2020-03-16 07:05:14

标签: python-3.x beautifulsoup

我想从http://www.statssa.gov.za/?page_id=1854&PPN=P6141.2&SCH=7549

中提取发布日期和时间

不幸的是我没有得到任何输出。

我尝试过

html = urllib3.PoolManager()
Res = html.request("GET", URL)
soup = BeautifulSoup(Res.data, 'html.parser')
Div = soup.find('div', {'class': 'row'})
date = Div.find('h5')
print(date.text())

由于日期为空而抛出错误

2 个答案:

答案 0 :(得分:1)

您必须更具体地定位div。文档中有多个类为row的元素,并且第一个元素与您期望包含h5的期望不符,这就是它失败的原因。

答案 1 :(得分:1)

正如rolf82所说,您得到的div不正确。试试这个方法。

from simplified_scrapy import SimplifiedDoc,req

html = req.get('http://www.statssa.gov.za/?page_id=1854&PPN=P6141.2&SCH=7549')
doc  = SimplifiedDoc(html)
div = doc.getElement('div',value='row',start='Header block@end')
h5 = div.h5
print (h5.text)

结果:

Publication date & time: 13 February 2020 @ 10:00