Параметр строки запроса меняется несколько раз в день - требуется request.get в решении Python - PullRequest
0 голосов
/ 09 января 2019

Я хочу автоматизировать поиск данных с этого сайта, https://reports.bcogc.ca/ogc/f?p=200:21:3220363279557::NO::: Код ниже выполняет загрузку CSV. Когда я в первый раз запускаю этот код, pandas df подключается к ответу и генерирует набор данных.

Проблема в том, что если я через некоторое время запускаю скрипт, вместо загрузки всей истории данных (более 30 000 строк), он загружает только самые последние данные (35 строк). Я заметил, что параметр строки запроса (params = params line) периодически меняется, несколько раз в день, и это вызывает частичную загрузку данных.

Я не хочу продолжать изменять параметр, чтобы я мог получать полный набор данных при каждом запуске кода. Есть ли решение этой проблемы, которое является постоянным и не потребует от меня ввода нового параметра каждый раз вручную?

import requests
import io

cookies = {
    'ORA_WWV_APP_200': 'ORA_WWV-fmsm2gSKWuJAeAMWlkJVb24U',
    '_ga': 'GA1.2.590107047.1541651761',
    '_gid': 'GA1.2.1288213293.1547007889',
}

headers = {
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Referer': 'https://reports.bcogc.ca/ogc/f?p=200:21:3220363279557::NO:::',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-US,en;q=0.9',
}

params = (
    ('p', '200:21:3220363279557:CSV::::'),
)

response = requests.get('https://reports.bcogc.ca/ogc/f', headers=headers, params=params, cookies=cookies)

df = pd.read_csv(io.StringIO(response.text), na_values = '-', low_memory=False)

1 Ответ

0 голосов
/ 09 января 2019

Сайт перенаправляет на URL, содержащий новый параметр. просто получите этот новый параметр из URL и повторите запрос с обновленным параметром.

...