Очистка Python автоматически загружает последующие страницы новостей при прокрутке веб-сайта вниз

#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]