2024-10-05 13:22:17 发布
网友
我从一个网站上刮了一些风的值,它的工作刮的数字,只是我不能刮的数字背景色。(背景颜色随值变化,非常重要)
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",{''})
在原始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)使用Selenium、NightmareJS、Puppeteer等无头浏览器呈现站点的实时版本,并在图表呈现后收集数据。这将是一个更简单的答案,也是我推荐的答案。无头浏览器在运行时确实有占用更多内存的缺点,因此如果这是一个需要扩展的解决方案,那么这可能会有问题。你知道吗
2)通过向上面的链接发送请求,直接从服务器收集实时数据,然后根据与之相关的颜色进行解释。这可能是最复杂的解决方案,但如果使用无头浏览器是不可能的,这是你必须要做的。您必须通读页面用来“着色”数据的JavaScript,并在Python中自己模拟它。你知道吗
在原始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
这里有两个选项:
1)使用Selenium、NightmareJS、Puppeteer等无头浏览器呈现站点的实时版本,并在图表呈现后收集数据。这将是一个更简单的答案,也是我推荐的答案。无头浏览器在运行时确实有占用更多内存的缺点,因此如果这是一个需要扩展的解决方案,那么这可能会有问题。你知道吗
2)通过向上面的链接发送请求,直接从服务器收集实时数据,然后根据与之相关的颜色进行解释。这可能是最复杂的解决方案,但如果使用无头浏览器是不可能的,这是你必须要做的。您必须通读页面用来“着色”数据的JavaScript,并在Python中自己模拟它。你知道吗
相关问题 更多 >
编程相关推荐