使用Python 3.6.8从TMX提取数据

时间:2019-08-29 16:37:32

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

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

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

我正尝试再次以json格式再次提取数据,但从另一个网站获取数据,但似乎没有合作。特别是我正在尝试提取以下数据: if (!Array.prototype.flat) { Object.defineProperty(Array.prototype, 'flat', { value: function(depth = 1, stack = []) { for (let item of this) { if (item instanceof Array && depth > 0) { item.flat(depth - 1, stack); } else { stack.push(item); } } return stack; } }); }

这是我尝试过的。

https://api.tmxmoney.com/marketactivity/candeal?ts=1567086212742

我想获取信息的json(从字面上看,它只是一个具有术语,描述,出价收益,要价,变化,出价,要价,变化的表)。

相反,我得到的是“ JSONDecodeError:期望值:第1行第1列(字符0)”。

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

1 个答案:

答案 0 :(得分:0)

这是因为您获取的页面不是返回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')