如何在网站上的期望框中发布文本,然后在旁边抓取结果



不幸的是,我遇到了以下问题,我很乐意向您寻求帮助:

我想创建一个小Python脚本来跟踪电力供应商的价格,看看是否值得切换到那里。

网站如下:https://tibber.com/de/stromtarif#price-计算器

问题是,价格只在邮政编码和年度消费量输入各自的框后显示。

到目前为止,我成功地编写了以下代码:

from bs4 import BeautifulSoup
import requests
url = f'https://tibber.com/de/stromtarif#price-calculator'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
price = soup.find("div", class_='jsx-3205991333 MonthlyTariff')
print(price)

有了这个,我可以在价格最终显示的类别中找到合适的元素。出于测试目的,当前输出是整个元素,其中可以找到所需的子类及其值。如果我输入我的邮政编码和年度消费量,相关输出可以在中找到

</h1><div class="jsx-3205991333 detailContainer"> 

最终看起来像这个

<h1 class="jsx-3205991333 price f-heading fs-xxxl">81,36&nbsp;€</h1>

由于输出是在输入后才生成的,我需要以某种方式将值发布到的框中

<input type="tel" id="postalCode" placeholder="Postleitzahl" value="" class="jsx-55b7d3df7d2ec18f input"> 

<input type="tel" id="consumption" maxlength="8" placeholder="Jahresverbrauch" value="" class="jsx-55b7d3df7d2ec18f input">

不幸的是,我不知道该怎么做。你们能帮帮我吗?

提前非常感谢!

这些信息在页面中从API端点水合,您需要直接抓取(您可以在开发工具-网络选项卡中找到它(。这里有一种方法:

import requests
import pandas as pd
postcode = '72535'
url = f'https://tibber.com/de/api/lookup/price-overview?postalCode={postcode}'
headers = {
'content-type': 'application/json',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.47'
}
r = requests.get(url, headers=headers)
df = pd.json_normalize(r.json()['energy']['today']['priceComponents'])
print(df)

终端中的结果:

type    priceExcludingVat   priceIncludingVat
0   taxes   0.0483  0.0574
1   power   0.1785  0.2125
2   grid    0.0638  0.0759

json响应中有更多信息,您可以切片&相应地掷骰子。

请参阅大熊猫的相关文件:https://pandas.pydata.org/docs/

还有申请文件:https://requests.readthedocs.io/en/latest/

相关内容

  • 没有找到相关文章

最新更新