他的表的資料在 ajax 請求后面。我仍在學習,但我不想求助于使用 selenium,因為查看表格元素將很難將資料排列到資料框中。我怎樣才能得到這個,以及將來我應該在這些網站上尋找什么樣的東西。
我已經嘗試使用所有請求標頭,但我仍然希望能夠獲取 JSON 資料。
https://www.barchart.com/futures/quotes/ESU22/options/MI7N22
uj5u.com熱心網友回復:
您需要一個標頭x-xsrf-token和其他 cookie laravel_token來請求 API。
你怎么能得到這個餅干?只有當您打開真正的瀏覽器(selenium 或playwright)并獲取它們后,您才能向 API 發送簡單的請求。
我從瀏覽器復制的 API cURL 中得到了這個 cookie。
這里有一些示例代碼:
import requests
headers = {
'authority': 'www.barchart.com',
'accept': 'application/json',
'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,ru;q=0.6',
'cookie': 'laravel_token=eyJpdiI6IkkxM1I5UEZ5MStweUs3TllON0o4THc9PSIsInZhbHVlIjoiUWYyaUJUR1RlanFoTmhvdFVXb1NNM3MwTmtmOFZHcVpxSmpHNkNZc0htVEdQNEdzY0NyeHlkTmdJVUNsY3hqNithTi9pRjZLeHVzQVU3YnVkZHpmT3hUaUlvbVdzZnhVNzFZdzVTVFVEQzZ6UVBJNjIwUzN3Yk9rbVhOUXNSMm5JOUluK3ZzRTJjV3VKSTZ0SDVZN21vMnVQZWdRNjhLcUgwck9qMlF5RVVWaG9JbVUzVEdRb1p4ZXVVK0MydFhGdjlYQUhmUFhBb3JnWkt5SHBVdzRjMHlteVphVTZuTXlvUHlsOUljdjNvUzVtVHdkOUdVNjZCNTJWVDJsaFptWWlTbWlzOXFXM2pXNGZrWktyejlCOXR3QlgxVkdwUHhGWXVwVjdqRnVPNTZKOTR3OGZqS3JPQTNxdVhEb1JCUzEiLCJtYWMiOiJmOGUzMDk4MDVjYzdkNmJiYTM0MTRiZmE5Mjc1NDUxZGM3NTY1NWFlMWRiMzdmMGViMTA5MTY0NmFiMGQwNTFlIn0=; ',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36',
'x-xsrf-token': 'eyJpdiI6InNCL1BqSTFKN3pkdGcyL0VDMTNTbmc9PSIsInZhbHVlIjoiQ0FKQmdzcVRqSGkzTXJ6c0JKdlNkdzR3TzU4RWxQZVBRSC9kVDdxcVFQWTMwUnlrakdyWEwyd01tbUgzOGpDdEt4UHRraU05WHBwOHNFclQ5RXFyck1CTktiOUNLTUtzUEpkdkR2V3pBMm1LbTlVSlpOUFZjUlhXL1ZIbGVFMFgiLCJtYWMiOiJhMTgyNDQ4NjJhYTViOGU5YmE5ODc1MzlmNTcwYTBkYTExOThlNGIwM2I3OWU3MGNhZDQ5ZTNmODNhMGNiZTU2In0=',
}
params = {
'symbol': 'MI7N22',
'list': 'futures.options',
'fields': 'strike,highPrice,lowPrice,lastPrice,priceChange,bidPrice,askPrice,volume,openInterest,premium,tradeTime,longSymbol,symbolCode,symbolType,hasOptions',
'meta': 'field.shortName,field.description,field.shortName,field.type,lists.lastUpdate',
'orderBy': 'strike',
'orderDir': 'asc',
'hasOptions': 'true',
'raw': '1',
}
response = requests.get('https://www.barchart.com/proxies/core-api/v1/quotes/get', params=params, headers=headers)
json = response.json()
print(json["data"][0])
輸出:
{'strike': '1,900.00C', 'highPrice': '1,774.00', 'lowPrice': '1,774.00', 'lastPrice': '1,774.00', 'priceChange': ' 4.25', 'bidPrice': 'N/A', 'askPrice': 'N/A', 'volume': 'N/A', 'openInterest': 'N/A', 'premium': '88,700.00', 'tradeTime': '06/17/22', 'longSymbol': 'MI7N2|1900C', 'symbolCode': 'FUTOPT', 'symbolType': 12, 'hasOptions': 'No', 'raw': {'strike': 1900, 'highPrice': 1774, 'lowPrice': 1774, 'lastPrice': 1774, 'priceChange': 4.25, 'bidPrice': 0, 'askPrice': 0, 'volume': None, 'openInterest': None, 'premium': 88700, 'tradeTime': 1655501850, 'longSymbol': 'MI7N2|1900C', 'symbolCode': 'FUTOPT', 'symbolType': 12, 'hasOptions': False}}
也許您需要更改此 cookie 和標頭的值。(我不知道它們的有效期以及它們是否鏈接到我的 IP 地址)。
我希望我能夠幫助你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/492840.html
上一篇:如何將insertBefore和appendChild與jQueryAJAX服務器端呈現的html結果一起使用
下一篇:使用ajax的資料沒有出現在前端
