我有一个Web链接,可直接下载excel文件。它会打开一个写有“您的文件正在下载”的页面,然后开始下载文件。
有什么方法可以使用请求模块将其自动化吗?
我可以用硒来做,但是我想让它在后台运行,所以我想知道我是否可以使用请求模块。
我使用了request.get,但是它只给出了文本,即“您的文件正在下载”,但是以某种方式我无法获取该文件。
答案 0 :(得分:0)
此Python3代码将网络上的任何文件下载到内存:
import requests
from io import BytesIO
url = 'your.link/path'
def get_file_data(url):
response = requests.get(url)
f = BytesIO()
for chunk in response.iter_content(chunk_size=1024):
f.write(chunk)
f.seek(0)
return f
data = get_file_data(url)
您可以使用下一个代码读取Excel文件:
import pandas as pd
xlsx = pd.read_excel(data, skiprows=0)
print(xlsx)
答案 1 :(得分:0)
听起来您实际上没有指向该文件的直接URL,而是需要使用一些JavaScript。也许您可以通过检查浏览器中的页面访问量来找到基础网络调用,该页面访问量显示了用于下载文件的直接URL。有了它,您实际上可以直接使用pandas读取excel文件的URL:
import pandas as pd
url = "https://example.com/some_file.xlsx"
df = pd.read_excel(url)
print(df)
这很好并且很整洁,但是如果您真的想使用请求(或避免使用熊猫),则可以按照this答案中所示下载原始文件内容,然后使用pyexcel_xlsx
包的{{ 1}}的功能是在没有任何大熊猫参与的情况下进行阅读。