【问题标题】:Pull Data from TMX Using Python 3.6.8使用 Python 3.6.8 从 TMX 中提取数据
【发布时间】:2019-08-29 16:37:32
【问题描述】:

大约两个月前,我问了一个关于从 CME 以 json 格式提取数据的问题。在您的帮助下,我成功地提取了适当的数据。

想提醒大家,我对Python还是很陌生,所以如果我的问题比较简单,请多多包涵。

我正在尝试以 json 格式再次提取数据,但来自不同的网站,并且事情似乎不合作。特别是我试图提取以下数据: https://api.tmxmoney.com/marketactivity/candeal?ts=1567086212742

这是我尝试过的。

import pandas as pd
import json
import requests
cadGovt = 'https://api.tmxmoney.com/marketactivity/candeal?ts=1567086212742'
sample_data = requests.get(cadGovt)
sample_data.encoding = 'utf-8'
test = sample_data.json()
print(test)

我想获取信息的 json(实际上只是一个包含术语、描述、投标收益率、要价收益率、变化、投标价格、要价、变化的表格)。

相反,我收到“JSONDecodeError:预期值:第 1 行第 1 列(字符 0)”。

如果有人有任何指导或建议,将不胜感激。

【问题讨论】:

    标签: json python-3.x python-requests


    【解决方案1】:

    这是因为你得到的页面没有返回JSON,而是一个 HTML 页面。所以当你尝试使用

    test = sample_data.json()

    您正在尝试将 HTML 解析为 JSON,但这是行不通的。你可以从页面上刮掉数据,这里有一个 bs4 的例子你可以试试,它的边缘有点生锈,但它应该可以工作。

    import requests as r
    from bs4 import beautifulsoup
    url = 'https://api.tmxmoney.com/marketactivity/candeal?ts=1567086212742'
    response = r.get(url)
    soup = BeautifulSoup(response.text, 'lxml')
    
    for tr in soup.find_all('tr'):
        print(tr.text+"\n")
    

    你可以得到这样的TD

    for tr in soup.find_all('tr'):
        tds = tr.find_all('td')
    

    【讨论】:

    • 有没有办法将它从 HTML 转换为 JSON,以便我可以访问表格?
    • 我不知道,如果你真的需要数据,你可以使用 BeautifulSoup (pypi.org/project/beautifulsoup4) 将其从页面上刮下来。如果你愿意,我会写一个简短的例子?
    • 如果可以的话,那就太棒了!
    • 当然,给我一些。我的 bs4 有点生锈了。
    • 嘿@Unknown1984 我刚刚编辑了我的帖子,试试看它是否适合你。
    猜你喜欢
    • 1970-01-01
    • 2016-12-02
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2017-04-16
    相关资源
    最近更新 更多