from requests_html import HTMLSession import os class Spider: def __init__(self): self.base_url = 'https://s3-ap-northeast-1.amazonaws.com/data.binance.vision/data/spot/daily/klines' self.pair = '1INCHBTC' self.interval = '1d' self.session = HTMLSession() def get_urls(self): urls = [] # 首页 response = self.session.get(f'{self.base_url}/{self.pair}/{self.interval}/') if response.status_code == 200: for link in response.html.links: if link.endswith('.zip'): urls.append(link) # 分页 while True: response = self.session.get(response.html.links[-1]) if response.status_code != 200: # 请求失败 break for link in response.html.links: if link.endswith('.zip'): urls.append(link) if 'CHECKSUM' in response.html.links[-1]: break return urls def download_files(self): urls = self.get_urls() if not urls: print('下载失败') return if not os.path.exists('download_files'): os.mkdir('download_files') for url in urls: file_name = url.split('/')[-1] file_path = f'download_files/{file_name}' if os.path.exists(file_path): # 文件已存在 print(f'{file_name} 已存在') continue response = self.session.get(url) if response.status_code != 200: # 请求失败 print(f'{file_name} 下载失败') continue with open(file_path, 'wb') as f: f.write(response.content) print(f'{file_name} 下载成功') def run(self): self.download_files()
时间: 2024-02-10 19:18:53 浏览: 31
这是一个 Python 爬虫程序,用于从 Binance 网站下载 1INCHBTC 在 1 天内的 K 线数据。程序使用了 requests_html 库来处理 HTTP 请求和解析 HTML。在 Spider 类中,构造函数 __init__ 定义了程序需要的一些基础参数,如 Binance 的数据下载链接、交易对、时间间隔、HTTP 会话等。方法 get_urls 用来获取数据文件的下载链接列表,方法 download_files 用来下载这些数据文件,如果文件已存在则不会重复下载。最后,在 run 方法中调用了 download_files 方法来运行整个程序。
相关问题
from requests_html import HTMLSession ModuleNotFoundError: No module named 'requests_html'
这个问题说明你的系统中没有安装requests_html模块,需要先安装该模块,你可以通过以下命令使用pip安装:
```
pip install requests-html
```
如果执行上述命令时出现权限问题,可以在命令前加上sudo:
```
sudo pip install requests-html
```
安装完成后,你的代码就可以正常运行了。
#coding=utf-8 from requests_html import HTMLSession session = HTMLSession() import time import csv import os 什么意思
这段代码的作用是导入所需的模块和库,以及设置Python源文件的编码格式为UTF-8。
- `from requests_html import HTMLSession` 导入了名为`HTMLSession`的类,该类可以用于进行HTTP请求和解析HTML内容。
- `session = HTMLSession()` 创建了一个`HTMLSession`的实例对象,用于发送HTTP请求和处理响应。
- `import time` 导入了Python内置的`time`模块,用于进行时间相关的操作,如暂停程序执行。
- `import csv` 导入了Python内置的`csv`模块,用于读写CSV文件。
- `import os` 导入了Python内置的`os`模块,用于与操作系统进行交互,如文件操作和路径操作。
最后一行 `#coding=utf-8` 是一个注释,它表示该源文件的编码格式是UTF-8。这是一种常见的编码格式,用于支持多种语言和字符集。在Python 3中,通常不需要显式地声明编码格式,因为默认编码格式就是UTF-8。但是在旧版本的Python或特定环境中,可能需要添加这样的注释来确保正确的编码处理。