我試圖從https://alreits.com/screener
中決議表格。我試著這樣做:
我試著這樣做。
main_url = 'https://alreits.com/screener'/span>
r = requests.get(main_url)
df_list = pd.read_html(r.text)
df = df_list[0]
print(df)
但是pandas找不到這個表。 我也試過使用BeautifulSoup4,但似乎沒有得到更好的結果。 這就是選擇器。#__next > div.MuiContainer-root.MuiContainer-maxWidthLg > div.MuiBox-root.jss9.Card__CardContainer-feksr6-0.fpbzHQ.ScreenerTable__CardContainer-sc-1c5wxgl-0.GRrTj > div > table > tbody
這就是完整的xPath。/html/body/div/div[2]/div[2]/div/table/tbody
我試圖獲得股票符號(名稱下)、部門、分數和市值。其他資料也不錯,但不是必須的。
謝謝你!
uj5u.com熱心網友回復:
我從開發工具中找到一個JSON網址。這是一個簡單的方法來提取表格,而不是使用Selenium。使用post request來提取資料。
import requests
headers = {
'authority': 'api.alreits.com:8080'。
'sec-ch-ua': '"Google Chrome";v="93", " Not;A Brand";v="99", "Chromium";v="93"'/span>,
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'/span>,
'sec-ch-ua-platform': '"Windows"',
'content-type': 'application/json',
'accept': '*/*',
'origin': 'https://alreits.com',
'sec-fetch-site': 'ame-site',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
'referer': 'https://alreits.com/',
'accept-language': 'en-US,en;q=0.9',
}
params = (
('page', '0') 。
('size', '500),
('sort', ['marketCap,desc', 'score,desc', 'ffoGrowth,desc']) 。
)
data = '{"filters":[]}'/span>
response = requests.post('https://api.alreits.com:8080/api/reits/screener', headers=headers, params=params, data=data)
df = pd.DataFrame(response.json())
uj5u.com熱心網友回復:
下面的代碼將回傳你想要的資料。
import requests
import pprint
import json
headers = {'content-type': 'application/json',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}.
r = requests.post(
'https://api.alreits.com:8080/api/reits/screener?page=0&size=500&sort=marketCap,desc&sort=score,desc&sort=ffoGrowth,desc' ,
headers=頭資訊, data=json.dumps({'filters':[]}))
if r.status_code == 200:
pprint.pprint(r.json())
# Now you have the data - do what you want with it.
else:
print(r.status_code)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/314849.html
標籤:
