Metadata-Version: 2.4
Name: SpiderX-Framework
Version: 0.2.0
Summary: 爬取网站数据，并保存到当前data目录下
Home-page: https://github.com/KasperJiang/SpiderFramework
Author: Kasper Jiang
Author-email: jiangkaibo1987@163.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: altgraph==0.17.4
Requires-Dist: anyio==4.9.0
Requires-Dist: APScheduler==3.11.0
Requires-Dist: build==1.2.2.post1
Requires-Dist: CacheControl==0.14.3
Requires-Dist: certifi==2025.4.26
Requires-Dist: charset-normalizer==3.4.2
Requires-Dist: cleo==2.1.0
Requires-Dist: click==8.2.0
Requires-Dist: colorama==0.4.6
Requires-Dist: crashtest==0.4.1
Requires-Dist: deptry==0.23.0
Requires-Dist: distlib==0.3.9
Requires-Dist: docutils==0.21.2
Requires-Dist: dulwich==0.22.8
Requires-Dist: et_xmlfile==2.0.0
Requires-Dist: fastjsonschema==2.21.1
Requires-Dist: filelock==3.18.0
Requires-Dist: findpython==0.6.3
Requires-Dist: h11==0.16.0
Requires-Dist: httpcore==1.0.9
Requires-Dist: httpx==0.28.1
Requires-Dist: id==1.5.0
Requires-Dist: idna==3.10
Requires-Dist: iniconfig==2.1.0
Requires-Dist: installer==0.7.0
Requires-Dist: jaraco.classes==3.4.0
Requires-Dist: jaraco.context==6.0.1
Requires-Dist: jaraco.functools==4.1.0
Requires-Dist: keyring==25.6.0
Requires-Dist: lxml==5.4.0
Requires-Dist: markdown-it-py==3.0.0
Requires-Dist: mdurl==0.1.2
Requires-Dist: more-itertools==10.7.0
Requires-Dist: msgpack==1.1.0
Requires-Dist: nh3==0.2.21
Requires-Dist: numpy==2.2.6
Requires-Dist: openpyxl==3.1.5
Requires-Dist: packaging==25.0
Requires-Dist: pandas==2.2.3
Requires-Dist: pbs-installer==2025.4.9
Requires-Dist: pefile==2023.2.7
Requires-Dist: pkginfo==1.12.1.2
Requires-Dist: platformdirs==4.3.8
Requires-Dist: pluggy==1.5.0
Requires-Dist: poetry==2.1.3
Requires-Dist: poetry-core==2.1.3
Requires-Dist: Pygments==2.19.1
Requires-Dist: pyinstaller==6.13.0
Requires-Dist: pyinstaller-hooks-contrib==2025.4
Requires-Dist: pyproject_hooks==1.2.0
Requires-Dist: pytest==8.3.5
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: python_minifier==2.11.3
Requires-Dist: pytz==2025.2
Requires-Dist: pywin32-ctypes==0.2.3
Requires-Dist: RapidFuzz==3.13.0
Requires-Dist: RateLimiterX==0.1.1
Requires-Dist: readme_renderer==44.0
Requires-Dist: requests==2.32.3
Requires-Dist: requests-toolbelt==1.0.0
Requires-Dist: requirements-parser==0.11.0
Requires-Dist: rfc3986==2.0.0
Requires-Dist: rich==14.0.0
Requires-Dist: setuptools==80.4.0
Requires-Dist: shellingham==1.5.4
Requires-Dist: six==1.17.0
Requires-Dist: sniffio==1.3.1
Requires-Dist: tomlkit==0.13.2
Requires-Dist: trove-classifiers==2025.5.9.12
Requires-Dist: twine==6.1.0
Requires-Dist: types-setuptools==80.4.0.20250511
Requires-Dist: typing_extensions==4.13.2
Requires-Dist: tzdata==2025.2
Requires-Dist: tzlocal==5.3.1
Requires-Dist: urllib3==2.4.0
Requires-Dist: util==0.0.1
Requires-Dist: utilsz==0.1.3
Requires-Dist: virtualenv==20.31.2
Requires-Dist: zstandard==0.23.0

# SpiderXFramework
爬取网页数据框架，并保存到data目录里的excel文件；
1. 支持自定义请求、解析网页
2. 支持指定时间窗口内的爬取速度控制：匀速爬取、最快爬取
3. 支持爬取失败时进行重试和延迟
4. 支持自动打开数据excel文件
5. 支持自动发送email
6. 支持自动发送企业微信

## 使用说明
首次运行后会生成配置文件config.py，配置如下(最新参考config_def.py)：  
* LOG_LEVEL：日志等级，例如："debug"、"info"、"warning"、"error"、"fatal"
* BASE_URL: 爬取网页的地址，例如："https://movie.douban.com"
* MAX_PAGE：爬取最大的页数，例如：10
* MAX_THREADS：同时爬取页面的线程数，不宜过多以免被反爬虫，5-10比较合适
* RETRY_TIMES：网络请求失败时的重试次数，例如：5
* RETRY_DELAY_MS：请求失败后重试的延迟，单位毫秒，例如5000
* INTERVAL_MINUTES：是否定时爬取网页，0：只爬取1次；>0：爬取时间间隔，单位为分钟，例如设为1表示每1分钟爬取一次
* RATE_LIMIT_TIME_WINDOW：限流相关参数，时间窗口，单位ms，例如20 * 1000
* RATE_LIMIT_COUNT：时间窗口范围内最多执行网络请求次数，例如30
* DATA_SAVE_PATH：爬取到的数据文件保存路径，备份文件也保存同目录下
* COPY_SAVE_PATH：有时想拷贝一份数据到其他目录，可设置COPY_SAVE_PATH。原始文件保存在MOVIE_SAVE_PATH。例如：r"D:/data.xlsx"
* PUSH_NOTIFICATION:爬取完成后是否进行消息推送
  * ENABLED：True、False
  * PUSH_CHANNEL：推送渠道，支持打开本地文件、email、企业微信
    * OPEN_FILE：爬取完成后是否自动打开本地数据文件，True、False
    * EMAIL：
        * ENABLED：爬取结束后是否自动发送邮件：True、False
        * SMTP_SERVER：发送邮件的smtp服务器，例如："smtp.163.com"
        * FROM_ADDR：发送时使用的发送者邮箱地址，例如："sender@163.com"
        * AUTH_CODE：发送时使用的发送者邮箱的授权码，例如："TPn8tKfF45612345"
        * TO_ADDR：发送给谁的邮箱地址，例如："receiver.163.com"
    * WECOM：
        * ENABLED：爬取结束后是否自动发送企业微信消息：True、False
        * WEBHOOK_KEY：企业微信的群机器人的webhook的key值，程序将通过该机器人发送消息，可查看手机端企业微信-某个群-设置-机器人，例如："ce57445a-ba75-4e6c-9200-41687b1cfdef"
* CUSTOM：自定义配置参数，后续可用于框架和二次开发时使用
  * PARAM1：用户自定义参数PARAM1

## 项目说明
### 执行依赖安装
pip install -r requirements.txt

### 依赖固化
pip freeze > requirements.txt

### 打包模块
1. pip install build
2. rmdir /S /Q "dist" "src\SpiderX_Framework.egg-info" & python -m build

### 打包exe
cd pyinstaller & python.exe .\pyinstaller_custom.py & cd ..

### 发布模块到pypi
1. pip install twine  
2. python -m twine upload --repository pypi dist/*
3. 输入用户名和API Token。
