我无法从以下页面下载txt文件:https://www.ceps.cz/en/all-data#RegulationEnergy(当您向下滚动并查看下载:txt,xls和xml时)。
我的目标是创建刮板,该刮板将转到链接的页面,例如单击txt链接并保存下载的文件。
我不确定如何解决的主要问题:
该文件没有我可以调用和下载的真实链接,但是该链接是根据过滤器和文件类型使用JS创建的。
当我将requests
库用于python并调用带有所有标头的链接时,它只会将我重定向到https://www.ceps.cz/en/all-data。
尝试的方法:
使用ParseHub之类的刮板下载链接无法正常工作。但是这个刮板是我想要得到的最接近的刮板。
使用的requests
库使用HXR请求用于下载文件的标头连接到链接,但它只是将我重定向到https://www.ceps.cz/en/all-data。
如果您可以为此任务提出一些解决方案,请先谢谢您。 :-)
答案 0 :(得分:2)
您可以使用Selenium将这些数据下载到您选择的目录中;您只需要指定要将数据保存到的目录即可。在下面的内容中,我将txt数据保存到我的桌面:
from selenium import webdriver
download_dir = '/Users/doug/Desktop/'
chrome_options = webdriver.ChromeOptions()
prefs = {'download.default_directory' : download_dir}
chrome_options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('https://www.ceps.cz/en/all-data')
container = driver.find_element_by_class_name('download-graph-data')
button = container.find_element_by_tag_name('li')
button.click()
答案 1 :(得分:0)
您应该这样做:
import requests
txt_format = 'txt'
xls_format = 'xls' # open in binary mode
xml_format = 'xlm' # open in binary mode
def download(file_type):
url = f'https://www.ceps.cz/download-data/?format={txt_format}'
response = requests.get(url)
if file_type is txt_format:
with open(f'file.{file_type}', 'w') as file:
file.write(response.text)
else:
with open(f'file.{file_type}', 'wb') as file:
file.write(response.content)
download(txt_format)