为什么我在抓取 html 页面时不能 return 数字?
Why can't I return a figure when scraping html page?
我正在尝试从 this page. They have an API 中提取 24 小时交易量,但 json 数据中似乎没有返回交易量(至少我无法让它工作)。我已经尝试使用正则表达式进行简单的抓取,现在正在使用 lxml
xpath 方法。
如何从该页面获取 24 小时音量?它受保护了吗?
这是我的最新代码:
from lxml import html
import requests
swyftx_page = requests.get('https://swyftx.com/au/buy/bitcoin/')
swyftx_tree = html.fromstring(swyftx_page.content)
swyftx_prices_btc = swyftx_tree.xpath('/html/body/section[1]/div/div[2]/div/div[2]/div[2]/div[3]/h3/text()')
print(swyftx_prices_btc)
当我 运行 这个时,我得到:
['[=13=].00']
这显然是不对的。我期待这样的回答:
['34,560,324,200']
在您的浏览器中禁用此页面的 Javascript。如您所见,24 小时交易量最初设置为 $0.00。这意味着稍后必须使用 Javascript 对其进行更新。您可以尝试查找进行了哪些网络访问并访问它。
您在页面上看到的数据是通过 JavaScript 从外部 URL 加载的。要通过 requests
模块模拟它,您可以使用这个例子:
import json
import requests
url = "https://apic.swyftx.io/markets/aud/"
data = requests.get(url).json()
# uncomment to print all data:
# print(json.dumps(data, indent=4))
for d in data:
if d["name"] == "Bitcoin":
print("Volume:", d["volume24H"])
break
打印:
Volume: 34974203469
我正在尝试从 this page. They have an API 中提取 24 小时交易量,但 json 数据中似乎没有返回交易量(至少我无法让它工作)。我已经尝试使用正则表达式进行简单的抓取,现在正在使用 lxml
xpath 方法。
如何从该页面获取 24 小时音量?它受保护了吗?
这是我的最新代码:
from lxml import html
import requests
swyftx_page = requests.get('https://swyftx.com/au/buy/bitcoin/')
swyftx_tree = html.fromstring(swyftx_page.content)
swyftx_prices_btc = swyftx_tree.xpath('/html/body/section[1]/div/div[2]/div/div[2]/div[2]/div[3]/h3/text()')
print(swyftx_prices_btc)
当我 运行 这个时,我得到:
['[=13=].00']
这显然是不对的。我期待这样的回答:
['34,560,324,200']
在您的浏览器中禁用此页面的 Javascript。如您所见,24 小时交易量最初设置为 $0.00。这意味着稍后必须使用 Javascript 对其进行更新。您可以尝试查找进行了哪些网络访问并访问它。
您在页面上看到的数据是通过 JavaScript 从外部 URL 加载的。要通过 requests
模块模拟它,您可以使用这个例子:
import json
import requests
url = "https://apic.swyftx.io/markets/aud/"
data = requests.get(url).json()
# uncomment to print all data:
# print(json.dumps(data, indent=4))
for d in data:
if d["name"] == "Bitcoin":
print("Volume:", d["volume24H"])
break
打印:
Volume: 34974203469