Python 3.x 如果URL中没有显示页码,或者没有提供链接,如何刮取这些网页

Python 3.x 如果URL中没有显示页码,或者没有提供链接,如何刮取这些网页,python-3.x,selenium-webdriver,web-scraping,beautifulsoup,Python 3.x,Selenium Webdriver,Web Scraping,Beautifulsoup,嗨,我需要刮以下网页,但当涉及到分页,我无法获取与页码的URL。 您可以通过api来迭代每页(或者在这个api中是一个偏移量,因为它告诉您总共有多少条记录)。取总记录,然后除以限制集(并使用math.ceiling进行取整。然后使用倍数作为限制的偏移量作为参数,迭代从1到该数字的范围) 或者,更简单地说,将限制调整到更高的值,并在一个请求中获得: import requests from pandas.io.json import json_normalize url = 'https://a

嗨,我需要刮以下网页,但当涉及到分页,我无法获取与页码的URL。

您可以通过api来迭代每页(或者在这个api中是一个偏移量,因为它告诉您总共有多少条记录)。取总记录,然后除以限制集(并使用
math.ceiling
进行取整。然后使用倍数作为限制的偏移量作为参数,迭代从1到该数字的范围)

或者,更简单地说,将限制调整到更高的值,并在一个请求中获得:

import requests
from pandas.io.json import json_normalize

url = 'https://api.nasdaq.com/api/quote/HO%3ANMX/historical'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
payload = {
'assetclass': 'commodities',
'fromdate': '2020-01-05',
'limit': '9999',
'todate': '2020-02-05'}

data = requests.get(url, headers=headers,params=payload).json()
df = json_normalize(data['data']['tradesTable']['rows'])
输出:

print (df.to_string())
     close        date    high     low    open   volume
0   1.5839  02/04/2020  1.6179  1.5697  1.5699   66,881
1   1.5779  02/03/2020  1.6273  1.5707  1.6188   62,146
2   1.6284  01/31/2020  1.6786  1.6181  1.6677   68,513
3    1.642  01/30/2020   1.699  1.6305  1.6952   70,173
4   1.7043  01/29/2020  1.7355  1.6933  1.7261   69,082
5   1.7162  01/28/2020  1.7303    1.66   1.674   79,852
6   1.6829  01/27/2020  1.7305  1.6598  1.7279   97,184
7   1.7374  01/24/2020  1.7441  1.7369  1.7394   80,351
8   1.7943  01/23/2020  1.7981  1.7558  1.7919   89,084
9   1.8048  01/22/2020   1.811  1.7838  1.7929   90,311
10  1.8292  01/21/2020  1.8859  1.8242  1.8782   53,130
11  1.8637  01/17/2020   1.875  1.8472  1.8669   79,766
12  1.8647  01/16/2020  1.8926  1.8615  1.8866   99,020
13  1.8822  01/15/2020  1.9168  1.8797  1.9043   92,401
14  1.9103  01/14/2020  1.9224  1.8848   1.898   62,254
15   1.898  01/13/2020    1.94  1.8941  1.9366   61,328
16  1.9284  01/10/2020    1.96  1.9262  1.9522   67,329
17  1.9501  01/09/2020  1.9722  1.9282  1.9665   73,527
18  1.9582  01/08/2020  1.9776  1.9648  1.9759  110,514
19  2.0324  01/07/2020  2.0392  2.0065  2.0274   72,421
20  2.0339  01/06/2020   2.103  2.0193  2.0755   87,832