【问题标题】:How to parse the data points from an interactive table?如何解析交互式表格中的数据点?
【发布时间】:2021-02-16 11:31:59
【问题描述】:

我想知道如何使用 Python 解析交互式表格中包含的数据点。似乎我找不到包含数据的相应标签。还有其他出路吗?

这里是要解析的表格的轮廓:

一开始我使用了非常标准的方法来解析链接,但表格中的数字没有显示在print 输出中。我不确定下一步该怎么做。

import requests
from bs4 import BeautifulSoup as bs

url = requests.get("http://www.msri.cn/xyEnNCFIView")
soup = bs(url.content, "html.parser")
content = soup.find_all(id="tab-content")
print(content)

【问题讨论】:

  • 理解问题的基本信息不应位于链接后面。此外,您应该显示您的代码以及出错的地方。

标签: python web-scraping beautifulsoup


【解决方案1】:

从开发者控制台的网络标签,你只需要执行:

POST http://www.msri.cn/ncfi/query

您不需要在正文中发送任何数据,它似乎总是发送相同的输出(除非我假设已登录)

以下将获取数据并使用 matplotlib 构建图形:

import requests
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime

r = requests.post("http://www.msri.cn/ncfi/query")
result = r.json()

dates = [ datetime.strptime(t["name"], '%Y-%m-%d') for t in result["data"]["categories"]]
values = [ float(t["value"]) for t in result["data"]["dataset"][0]["set"]]

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=365))
plt.plot(dates, values)
plt.gcf().autofmt_xdate()
plt.ylabel('Index')
plt.xlabel('Date')
plt.savefig("capture.png")

结帐this repl.it,最后显示图表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    相关资源
    最近更新 更多