通过Beautifulsoup从iframe获取价值

时间:2019-04-21 11:36:03

标签: web-scraping beautifulsoup

我尝试使用beautifulsoup从Skopeo中获取温度值。 但是当我打印出汤的全文时,它只会显示一个iframe:

<iframe frameborder="0" height="100%" src="https://www.weatherlink.com/embeddablePage/show/c7ea9161378346e18d2e4c0ea056c55b/summary" width="100%"></iframe>

因此,我尝试使用iframe中显示的src地址: 但是它只显示一些其他代码,而没有我可以用漂亮的汤选择的任何代码:( 到目前为止,这是我的代码:

import json
from urllib.request import urlopen
from bs4 import BeautifulSoup

url= 'http://www.nordhessen-wetter.de'
# url = 'https://www.weatherlink.com/embeddablePage/show/c7ea9161378346e18d2e4c0ea056c55b/summary'
u = urlopen(url)
soup = BeautifulSoup(u, 'html.parser')

seitentxt = str(soup)

print(seitentxt)

不可能从此代码中获取温度值吗?

感谢您的帮助! 马吕斯

1 个答案:

答案 0 :(得分:0)

使用页面用于获取该内容的相同URL。您可以通过开发人员工具在“网络”标签中找到它。

import requests

url = 'https://www.weatherlink.com/embeddablePage/summaryData/db22c5a778f14c5da538dc6f3b3ddc0d?ts=1555852879023'
r = requests.get(url).json()
units =  r['currConditionValues'][0]['unitLabel']
current =  str(r['currConditionValues'][0]['value']) + units
high = str(r['highLowValues'][3]['value']) +  units
low = str(r['highLowValues'][4]['value']) + units
print(current, high, low)

如果要使用逗号分隔符,请使用convertedValue而不是value


临时时间:

high_time = str(r['highLowValues'][17]['value']) 
print(high_time)
low_time = str(r['highLowValues'][18]['value']) 
print(low_time)