为什么我在抓取 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