首页 > 解决方案 > 当数据点在html中是动态的时如何从网站上抓取和保存图表

问题描述

有没有办法使用像 bs4 或请求这样的 python 库从这个图表中抓取数据?

我试图查看网站源数据,但在 HTML 中的任何地方都看不到数据点。

当我在图表上移动鼠标时,我看到一个变量发生了变化,但我不知道它是如何工作的。

https://infogram.com/world-container-index-1h17493095xl4zj

关于如何下载和保存这些数据点的任何想法?

标签: javascriptpythonhtmlweb-scrapingcharts

解决方案


我能够提取script填充图表的文本并将其转换为json格式

final_datajson格式的数据。我想你现在可以提取你需要的任何东西。

这是代码。

import requests
from bs4 import BeautifulSoup
import json

url = "https://infogram.com/world-container-index-1h17493095xl4zj"
resp = requests.get(url)
html = resp.text


soup = BeautifulSoup(html, features="html.parser")

s = soup.findAll('script')
main_script = None

for i in range(len(s)):
    if s[i].contents:
        if 'window.infographicData' in s[i].contents[0]:
            main_script = s[i].contents[0]
            break


main_script = main_script.lstrip('window.infographicData=')
main_script = main_script.rstrip(';')

final_data = json.loads(main_script)



推荐阅读