Я хочу создать скрипт Python для загрузки zip-файла со следующего веб-сайта:
https://www.histdata.com/download-free-forex-historical-data/?/ascii/1-minute-bar-quotes/eurusd/2018
Я вижу ссылку на zip-файл. Если я нажимаю на него, начинается загрузка zip-файла.
Я вижу, что код этого файла на странице следующий:
<a title="Download the zip data file" id="a_file" href="javascript:return true;" target="nullDisplay">HISTDATA_COM_ASCII_EURUSD_M1_2018.zip</a>
Так что у меня нет прямого доступассылка, которую я могу получить, чтобы загрузить файл.
Чтобы получить список ссылок, я использовал следующий код:
from bs4 import BeautifulSoup, SoupStrainer
import requests
import re
pageLink = "https://www.histdata.com/download-free-forex-historical-data/?/ascii/1-minute-bar-quotes/eurusd/2018"
data = requests.get(pageLink)
dataSoup = BeautifulSoup(data.text, features="html.parser")
linkPattern = re.compile(r".*\.zip.*")
for dataLink in dataSoup.find_all('a'):
print("--- Downloading zip file: " + dataLink.get('href'))
С этим я получаю все ссылкистраницы, но почтовый индекс не появляется. Если я заменю dataSoup.find_all('a')
на dataSoup.find_all('a', href=linkPattern)
Список будет пуст.
Как я могу скачать zip-файл из скрипта?
РЕДАКТИРОВАТЬ:
Я виделдругой вопрос, который должен быть этим дубликатом, но я не могу найти способ заставить его работать.
По ссылке я вижу, что сценарий должен быть "javascript:return true;"
, поэтому я создал следующий код:
из импорта bs4 BeautifulSoup, SoupStrainer из импорта импорта запросов на импорт веб-драйвера селена re
browser = webdriver.PhantomJS ()
pageLink = "https://www.histdata.com/download-free-forex-historical-data/?/ascii/1-minute-bar-quotes/eurusd/2018"
browser.get(pageLink)
browser.execute_script("javascript:return true;")
Даже в этом случае это не такработать, поэтому я не могу найти решение также путем блокировки дублированного вопроса.
EDIT2:
Я видел, что javascript ничего не делает. Похоже, что ссылка имеет цель nullDisplay
. Когда я нажимаю на ссылку, кажется, что цель называется, это следующий код:
<form id="file_status" name="file_status" target="nullDisplay" method="POST" action="/getStatus.php">
<input type="hidden" name="tk" id="tk" value="632ec105a874a64a1cf28120afa145e5" />
<input type="hidden" name="date" id="date" value="2019" />
<input type="hidden" name="datemonth" id="datemonth" value="201910" />
<input type="hidden" name="platform" id="platform" value="ASCII" />
<input type="hidden" name="timeframe" id="timeframe" value="M1" />
<input type="hidden" name="fxpair" id="fxpair" value="EURUSD" />
</form>
So the problem is how to recognize this post and how to use it for downloading data.