我想爬取这个网页https://data.binance.vision/?prefix=data/spot/daily/aggTrades/ETHUSDT/中的ZIP文件,并保存到本地,python如何实现:其中headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'} url = "https://data.binance.vision/?prefix=data/spot/daily/aggTrades/ETHUSDT/"
时间: 2023-07-21 19:58:21 浏览: 195
你可以使用Python的requests库来实现这个任务。在发送HTTP请求时,需要加入headers参数,模拟浏览器的请求头,否则可能会被网站拒绝访问。同时,由于ZIP文件比较大,我们需要使用stream模式来下载文件,避免一次性将整个文件读入内存。
以下是实现的代码:
```python
import requests
import os
# 创建保存ZIP文件的目录
if not os.path.exists("zip_files"):
os.makedirs("zip_files")
# 发送HTTP请求并获取网页内容
url = "https://data.binance.vision/data/spot/daily/aggTrades/ETHUSDT/"
headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'}
response = requests.get(url, headers=headers)
# 解析HTML内容并找到ZIP文件链接
zip_link = url + response.content.split(b'"')[-2].decode()
# 下载并保存ZIP文件
filename = zip_link.split("/")[-1]
filepath = os.path.join("zip_files", filename)
response = requests.get(zip_link, headers=headers, stream=True)
with open(filepath, "wb") as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
print(f"Saved {filename} to local directory")
```
这个代码会将ZIP文件下载并保存到当前目录下的`zip_files`文件夹中。如果你想要保存到其他目录,可以修改代码中的`os.path.join()`函数的参数。同时,也可以修改headers中的User-Agent来模拟不同的浏览器。