你能从一个网站上刮出一个变化的颜色吗?

2024-10-05 13:22:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我从一个网站上刮了一些风的值,它的工作刮的数字,只是我不能刮的数字背景色。(背景颜色随值变化,非常重要)

https://www.windguru.cz/station/219

这是我想从风中刮去的那一页的颜色。你知道吗

page = requests.get('https://www.windguru.cz/station/219')
soup = BeautifulSoup(page.text, "lxml")
table = soup.find_all("div",{''})

Tags: httpsget网站颜色wwwpage数字cz
1条回答
网友
1楼 · 发布于 2024-10-05 13:22:17

在原始HTTP请求环境中,您只收集服务器发送回的HTML。因此,如果页面不断呈现新数据,则需要一个无头浏览器来观察这些更改。您可以看出数据是在这个页面中呈现的,因为观察网站的页面源与您在页面上“检查元素”时看到的源不同。你知道吗

当您使用Python请求页面源代码时,您只得到“骨架”HTML和呈现脚本,而不是实际呈现的数据。你知道吗

看起来这个页面每隔20秒不断ping一个PHP脚本来收集新的图表数据。然后它使用JavaScript来解释数据并将其解析为可见的图表。。。看起来它使用SVG来显示路径数据。你知道吗

以下是PHP脚本的响应数据,我们可以通过查看web检查器上的“网络”选项卡找到:

https://www.windguru.cz/int/iapi.php?q=station_data_current&id_station=219&date_format=Y-m-d%20H%3Ai%3As%20T&_mha=f4d18b6c

{
    "wind_avg": 6.99,
    "wind_max": 8.93,
    "wind_min": 4.85,
    "wind_direction": 171.215,
    "temperature": 13,
    "mslp": null,
    "rh": null,
    "datetime": "2019-06-12 23:08:17 CEST",
    "unixtime": 1560373697
}

这里有两个选项:

1)使用SeleniumNightmareJSPuppeteer等无头浏览器呈现站点的实时版本,并在图表呈现后收集数据。这将是一个更简单的答案,也是我推荐的答案。无头浏览器在运行时确实有占用更多内存的缺点,因此如果这是一个需要扩展的解决方案,那么这可能会有问题。你知道吗

2)通过向上面的链接发送请求,直接从服务器收集实时数据,然后根据与之相关的颜色进行解释。这可能是最复杂的解决方案,但如果使用无头浏览器是不可能的,这是你必须要做的。您必须通读页面用来“着色”数据的JavaScript,并在Python中自己模拟它。你知道吗

相关问题 更多 >

    热门问题