一个简单的python网络爬虫程序
ekrhizoc的Python项目详细描述
叶根
ekrizoc(E6c):一个网络爬虫
目录
定义
εκρίζωση(希腊语) 根除,根除
也称为E6c。在
用例
一个简单的python网络爬虫程序的实现。
输入:URL(种子)。
输出:简单的文本站点地图(显示页面之间的链接)。在
要求
- 爬虫程序仅限于one子域(不包括外部链接)。在
- 不使用网络爬虫库/框架(如scrapy)。在
- (可选)使用HTML处理库/框架。在
- 生产就绪代码。在
假设
- 每次运行时,输入URL(seed)仅限于一个。在
- 目标URL是静态页面(不需要后端javascript解析)。在
- 要从HTML锚点
<a>
元素提取的链接。在 - 有效链接包括
- 有效的URL
- 非空的
- 匹配有效的url模式
- 不超过
E6C_MAX_URL_LENGTH
个字符的长度 - 可以将相对url转换为完整url
- 以前未访问链接
- 链接不是被忽略的文件类型的一部分
- 链接与种子url具有相同的域
- 链接不受机器人.txt文件
- 有效的URL
设计
该项目实现了一个基于广度优先搜索图遍历的基本通用爬虫。在
配置
应用程序的行为可以通过环境变量进行配置。在
Environment Variable | Description | Type | Default Value |
---|---|---|---|
^{ | Level of logging - overrides verbose/quiet flag | string | - |
^{ | Directory to save logs | string | - |
^{ | Directory to save any output (bin) | string | bin |
^{ | File types of websites to ignore (e.g. ".filetype1,.filetype2") | string | ".png,.pdf,.txt,.doc,.jpg,.gif" |
^{ | Time (in seconds) to wait per request (not to populate server with multiple requests) | float | 0.1 |
^{ | The maximum number of urls to fetch/crawl | integer | 10000 |
^{ | The maximum length (character count) of a url to fetch/crawl | integer | 300 |
发展
配置本地开发
本地运行
在终端上,运行以下命令(在项目的根目录上执行):
- 激活项目环境:
$ . ./scripts/helpers/environment.sh
- 使用
poetry
:$ ekrhizoc
贡献
[不可用]
测试
(CI/CD的一部分)
[正在工作。。。]在
要运行测试,请打开终端并运行以下命令(在项目的根目录上执行):
- 激活项目环境:
$ . ./scripts/helpers/environment.sh
- 运行pytest:
$ make test
- 检查测试覆盖率:
$ make test-coverage
版本控制
增加版本号:$ poetry version {bump rule}
其中有效的通气规则为:
- 补丁
- 小调
- 少校
- 预赛
- 普雷米诺
- 前主
- 预释放
变更日志
使用CHANGELOG.md
跟踪此包的演变。
文件顶部的[UNRELEASED]
标记应该一直在那里记录工作,直到发布发生。在
工作应记录在以下子标题之一下:
- 已添加
- 改变
- 固定的
- 已删除
在版本中,应将以下格式的版本添加到文件中所有当前未发布的更改。## [major.minor.patch] - YYYY-MM-DD
部署
Pip包
在终端上,运行以下命令(在项目的根目录上执行):
- 激活项目环境:
$ . ./scripts/helpers/environment.sh
- 构建pip包:
$ make build-package
- 要发布pip包(需要向PyPi提供凭据):
$ make publish-package
Docker图像
在根目录下执行(在以下根目录上运行):
- 激活项目环境环境:
$ . ./scripts/helpers/environment.sh
- 要构建docker映像:
$ make build-docker
生产
对于生产,使用Docker映像。 {a25}公开发布。在
- 第一次从docker hub拉取图像:
$ docker pull nichelia/ekrhizoc:{version}
- 通过docker运行执行CLI:
$ docker run --rm -it -v ~/ekrhizoc_bin:/tmp/bin nichelia/ekrhizoc:{version} {command}
此命令将应用程序的bin(结果)装载到ekrizoc_bin文件夹下的用户根目录中。在
其中version是已发布的应用程序版本
- 项目
标签: