Как я могу скачать zip-файл, используя BeautifulSoup, когда ссылка показывает только «javascript: return true;» - PullRequest
0 голосов
/ 15 мая 2019

Я пытался написать скрипт, который загружал бы все исторические данные пар Форекс (в формате zip) из здесь одновременно. У меня проблема в том, что на последней странице, которая содержит ссылку на файл, я не получаю никакой ссылки на файл, а href показывает только: href = "javascript: вернуть true;"

<a id="a_file" title="Download the zip data file" href="javascript:return true;" target="nullDisplay">HISTDATA_COM_MT_EURUSD_M1_201905.zipHISTDATA_COM_MT_EURUSD_M1_201905.zip</a>

Здесь - ссылка на одну из страниц загрузки.

Я новичок в Python и веб-скребке, и я ценю любую помощь, чтобы направить меня в правильном направлении

1 Ответ

0 голосов
/ 15 мая 2019

Используйте инструменты разработчика Chrome для изучения точного типа отправляемого запроса, а также для поиска других данных формы и отправляемых заголовков.Для вашего случая я нашел заголовки и данные, чтобы загрузить zip-файл.Приведенный ниже код должен работать нормально.Просто установите библиотеку requests, прежде чем использовать приведенный ниже код.


resp = requests.post(r'http://www.histdata.com/get.php', 
data = {
    'tk': '43a87a0c7e650addea7b01a17395a91c',
    'date': '2018',
    'datemonth': '2018',
    'platform': 'MT',
    'timeframe': 'M1',
    'fxpair': 'EURUSD'
},
headers={
    'User-Agent': 'Mozilla/5.1',
    'Origin': 'http://www.histdata.com',
    'Referer': 'http://www.histdata.com/download-free-forex-historical-data/?/metatrader/1-minute-bar-quotes/eurusd/2018'
})

with open('output.zip', 'wb') as fpw:
    for chunk in resp.iter_content():
        fpw.write(chunk)

Примечание. Также можно загружать огромный файл, поскольку он не считывает данные в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...