#python #json #web-scraping #get
#python #json #очистка веб-страниц #получить
Вопрос:
При прокрутке веб-сайта финансовых новостей вниз http://www.aastocks.com/tc/stocks/news/aafn-company-news , он автоматически загрузит следующую страницу. Я проверил веб-сайт с помощью Chrome> Inspect> Network. Я обнаружил, что для получения дополнительных новостей URL-адрес запроса «http://www.aastocks.com/tc/resources/datafeed/getmorenews.ashx?cat=company-newsamp;newstime=975758621amp;newsid=NOW.1060532amp;period=0amp;key=amp;symbol= » и метод запроса — «GET». Я проверил вкладку ОТВЕТА в сети, и данные представлены в формате JSON. Следующий код не работает. Чего-то не хватает?
url ="http://www.aastocks.com/tc/resources/datafeed/getmorenews.ashx?cat=company-newsamp;newstime=975758615amp;newsid=NOW.1060527amp;period=0amp;key=amp;symbol="
df = pd.read_json(url)
Ответ №1:
Вам нужно установить referer
заголовки. Таким образом, простой способ — использовать requests
для получения json. И используйте pandas.DataFrame
для его прямого преобразования.Попробуйте код ниже:
import requests
import pandas as pd
headers = {
'Referer': 'http://www.aastocks.com/tc/stocks/news/aafn-company-news',
}
params = (
('cat', 'company-news'),
('newstime', '975758615'),
('newsid', 'NOW.1060527'),
('period', '0'),
('key', ''),
('symbol', ''),
)
response = requests.get('http://www.aastocks.com/tc/resources/datafeed/getmorenews.ashx', headers=headers, params=params)
df = pd.DataFrame(response.json())
print(df)
Результат:
t id dt ... becnt rcnt cv
0 1 .HK.201202_115703 2020/12/02 11:57 ... 3 5 1
1 1 .HK.201202_115445 2020/12/02 11:54 ... 81 96 1
2 1 NOW.1060528 2020/12/02 11:47 ... 129 116 1
3 1 NOW.1060522 2020/12/02 11:47 ... 4 5 1
4 1 NOW.1060523 2020/12/02 11:47 ... 8 15 1
5 1 NOW.1060520 2020/12/02 11:43 ... 159 53 1
6 1 NOW.1060518 2020/12/02 11:37 ... 2 0 1
7 1 NOW.1060517 2020/12/02 11:35 ... 33 49 1
8 1 RUM.201202_113518 2020/12/02 11:35 ... 65 52 1
9 1 NOW.1060514 2020/12/02 11:34 ... 0 0 1
10 1 RUM.201202_112609 2020/12/02 11:26 ... 16 17 1
11 1 NOW.1060510 2020/12/02 11:21 ... 11 26 1
12 1 NOW.1060508 2020/12/02 11:14 ... 42 58 1
13 1 NOW.1060506 2020/12/02 11:12 ... 4 2 1
14 1 NOW.1060502 2020/12/02 11:12 ... 0 0 1
15 1 NOW.1060507 2020/12/02 10:59 ... 9 3 1
16 1 NOW.1060497 2020/12/02 10:56 ... 2 0 1
17 1 NOW.1060496 2020/12/02 10:51 ... 2 1 1
18 1 NOW.1060495 2020/12/02 10:47 ... 0 0 1
19 1 NOW.1060492 2020/12/02 10:43 ... 0 0 1
[20 rows x 12 columns]