从网站上拉号码?

时间:2017-09-21 22:02:13

标签: python

我正在尝试制作一个从coinbase中提取比特币价格的脚本。

import urllib2
from bs4 import BeautifulSoup
response = urllib2.urlopen('https://www.coinbase.com/charts?locale=en-US/')
soup = BeautifulSoup(response, "html.parser")
print soup.title.string

当我运行它时,我得到的唯一输出是:

Bitcoin, Ethereum, and Litecoin Price Charts - Coinbase

我如何得到它以便我可以提取数字?

另外 - 如果我想让程序继续运行,那么它会更新价格 - 我该怎么做?

2 个答案:

答案 0 :(得分:0)

这个号码是通过javascript ajax加载的......所以这种技术根本不会起作用......

改为尝试这个(访问他们正在加载实际价格的相同网址)

import requests
value = float(requests.get("https://api.coinbase.com/v2/prices/USD/spot?").json()['data'][0]['amount'])

答案 1 :(得分:0)

该号码本身并未进入该页面。如果你检查html,你可以看到自己。该页面使用Ajax请求请求数据。

如果您在浏览器的网络开发控制台中打开网络标签,则会看到它定期调用此网址:https://api.coinbase.com/v2/prices/USD/spot

因此,您可以直接加载该URL,它会返回一个json字符串,您可以解码该字符串以获取您要查找的值:

import requests
url = 'https://api.coinbase.com/v2/prices/USD/spot?'
req = requests.get(url)
data = req.json()
print(data['data'][0]['amount'])

也就是说,如果您只是简单地使用他们的API,他们可能会很高兴。检查他们是否有可以使用的官方开发人员API。