【问题标题】:Scraping iterative data: empty list抓取迭代数据:空列表
【发布时间】:2021-03-10 03:19:26
【问题描述】:

我正在学习如何从网页中迭代抓取值,我以前使用过bs4,但我不知道为什么,即使这是一个简单的例子,我得到一个空列表(或元素)。

我要打印/保存的测试是:

<div data-v-1931433b="" class="mar-m c-r"> 9.1516 </div>

我使用的代码是:

 1 import json
 2 import requests
 3 from bs4 import BeautifulSoup
 4
 5
 6 url = 'https://goldencoreex.com/trade/index.html?spAsseType=0#/index'
 7
 8 html_page = BeautifulSoup(requests.get(url).content, 'html.parser')
 9 elements = html_page.find_all("div", class_="mar-m c-r")
10
11 print(elements)

我对此问题的唯一猜测是我可能弄乱了网址。

我也非常感谢一些关于如何使代码连续运行的提示,以便在元素更新时捕获数据。

【问题讨论】:

  • 页面是动态的,通过 javascript 呈现。您需要查看是否通过 API 请求数据或使用 Selenium 允许页面在获取 html 源代码之前呈现

标签: python web-scraping beautifulsoup


【解决方案1】:

评论中提到,页面是由JS动态渲染的,但是你可以查询API获取数据。

例如:

import requests
from tabulate import tabulate

api_url = "https://www.goldencoreex.com/wap/api/realtime!execute.action?symbol=btc,bts,nkn,etc,gdq,xrp,eth,ltc,akro,qtum,bhd"
response = requests.get(api_url).json()

table = [[item['name'], item['open'], item['change_ratio']] for item in response["data"]]
print(tabulate(table, headers=["Name", "Open", "Change"], tablefmt="pretty"))

输出:

+-----------+----------+--------+
|   Name    |   Open   | Change |
+-----------+----------+--------+
| BTC/USDT  | 17809.35 | -5.88  |
| BTS/USDT  |  0.0232  | -6.03  |
| NKN/USDT  | 0.019426 | -3.58  |
| ETC/USDT  |  6.2325  | -4.51  |
| GDQ/USDT  |  9.2947  | -1.34  |
| XRP/USDT  |  0.5456  | -2.38  |
| ETH/USDT  |  527.37  | -3.79  |
| LTC/USDT  |  77.23   | -11.9  |
| AKRO/USDT | 0.00913  | -8.54  |
| QTUM/USDT |  2.6376  | -6.06  |
| BHD/USDT  |  2.5054  | -2.16  |
+-----------+----------+--------+

【讨论】:

  • 嘿,你是怎么找到这个 API 的?对您来说,这看起来像是合法的加密货币交易所吗??
  • @Leafyshark 我对加密几乎一无所知,所以我无法回答你的问题。至于 API 端点,我是通过跟踪浏览器的流量找到的。它来自请求之一。检查开发者工具 -> 网络 ->XHR。
  • @Leafyshark 嗨,我相信它 100% 是一个骗局加密网页,而不是非法的。我在论坛的某个地方偶然发现了它。一般来说,绝对不要在加密交换网页上投入任何资金。绝对不是那个,特别是。 :)
  • 谢谢,哈哈!但你不是在网站上工作吗?
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 2021-09-25
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多