Beautifulsoup span类返回一个空字符串

我正尝试从挪威气象站打印出带有beautifulsoup的不同内容。 我设法打印出我想要的所有内容,但女巫却提到了下一小时的天气。

这包含我要获取的文本:

<span class="nowcast-description" data-reactid="59">har opphold nå,det holder seg tørt den neste timen</span>

我正在尝试用它打印它:

cond = soup.find(class_='nowcast-description').get_text()

Inspected elements from storm.no/ski

这是该网站上某些元素的图片。

打印这些:

soup = bs4.BeautifulSoup(html,"html.parser")
loc = soup.find(class_='info-text').get_text()
cond = soup.find(class_='nowcast-description').get_text()
temp = soup.find(class_='temperature').get_text()
wind = soup.find(class_='indicator wind').get_text()

也在此行中进行了测试:

cond = soup.select("span.nowcast-description")

但这给了我一切,除了我想要的东西。

网站链接:https://www.storm.no/ski

我得到:

Ski Akershus,131英里。

“”

3 m / s

mlefk 回答:Beautifulsoup span类返回一个空字符串

它是从脚本标签动态检索的。您可以正则表达式输出包含所有预测的对象,并由于未引用键而使用hjson库进行处理。您需要安装hjson然后执行以下操作:

import requests,hjson,re

headers = {'User-Agent':'Mozilla/5.0'}
r = requests.get('https://www.storm.no/ski')
p = re.compile(r'window\.__dehydratedState = (.*?);',re.DOTALL)
data = hjson.loads(p.findall(r.text)[0])
print(data['app-container']['current']['forecast']['nowcastDescription'])

您也可以直接使用库进行正则表达式输出,但是使用hsjon意味着您可以访问所有其他数据。

,

这是因为nowcast-description下的文本是动态生成的。如果要转储已加载的页面:

print(soup.prettify())

您只能找到以下内容:

<span class="nowcast-description" data-reactid="59">
</span>

在粗略分析中,似乎该跨度的内容是从字段 nowcastDescription 加载的,该字段是 window .__ dehydratedState 的一部分。 因为该字段是一个简单的json,所以您可以尝试从中提取它。

本文链接:https://www.f2er.com/3092763.html

大家都在问