大约两个月前,我问了一个有关从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)”。
如果有人有任何指导或建议,将不胜感激。
答案 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')