python - 抓取迭代数据:空列表
问题描述
我正在学习如何从网页中迭代抓取值,我以前用过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)
对这个问题的唯一猜测是我可能弄乱了网址。
我也非常感谢有关如何使代码连续运行的一些提示,以便在元素更新时捕获数据。
解决方案
正如评论中提到的,页面是由 动态呈现的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 |
+-----------+----------+--------+
推荐阅读
- react-native - 在 react-navigation 嵌套路由中增加了 IOS 和 Android 的内存使用量
- selenium-webdriver - 我找不到此表的 xpath 或 css 定位器
- gnuplot - 你如何对 gnuplot 中的每 n 列数据求和?
- python - Python 的 select() 延迟报告子进程输出的存在
- javascript - 如何在 Javascript 中创建数学上正确且可接受的分区
- python - 创建一个复杂的循环
- r - 在 Rstudio 中安装 R 闪亮出现错误
- python - 在python中查找轨迹时间序列的周期性
- asp.net - Linq Enity Framework,从 IQueryable 导航属性中的集合中选择
- php - 如何将获取值 php 添加到引导切换折叠中?