✒️ 其他网站的扩展开发指南
Website crawler develope guide
基于 Scrapy
需切换到 下一个版本 Minor 开发分支,PR 时提交到此分支
开发步骤
1. 爬虫代码
以 wnacg 为例
scrapy爬虫类: WnacgSpider
xpath解析类: WnacgUtils
WnacgSpider
✅ name: 爬虫名字,取目标网站域名的部分或标题,与分支名相同
✅ domain: 目标网站域名
✅ search_url_head: 搜索页url(去掉关键词),大部分网站都是以get形式直出的
类方法
🔳 @property search: 生成第一个请求的连接,可结合mappings进行复杂输入的转换
🔳 start_requests: 发出第一个请求,可在此进行search实现不了 或 不合其逻辑的操作
🔳 parse_fin_page: (一跳页面不需要,二跳页面必须) 章节页面 > 直接获取该章节的全页
常用方法
- self.say: 能将字符串(可使用部分html标签格式)打印在gui上
WnacgUtils
常规漫与🔞继承基类不同
类属性(Utils)
✅ name: 同爬虫名字
✅ uuid_regex: 将 作品id 从作品 预览url 中抽取的正则表达式
🔳 headers: 通用请求头
🔳 book_hea: 读剪贴板功能使用的请求头
🔳 book_url_regex: 读剪贴板功能使用所对应当前网站抽取 作品id 的正则表达式
类方法(Utils)
✅ parse_search_item: 解析搜索页 xpath -> BookInfo
🔳 parse_book: 读剪贴板功能 xpath 等解析作品页 -> BookInfo
🔳 parse_search: 聚合搜索 xpath 等解析搜索页 -> List[BookInfo]
🔳 parse_publish_: 解析发布页
🔳 test_index: 测试网络环境能否访问当前网站
最后需要在 spider_utils_map 加上对应的 Utils
2. 其他代码
variables/__init__.py
SPIDERS- 爬虫名字:加入新序号(方面下面理解设为序号3²),值为爬虫名字wnacgDEFAULT_COMPLETER- 默认预设:序号必须,值可空列表。用户配置会覆盖,但是可以先把做了开发的映射放进去STATUS_TIP- 状态栏输入提示:序号必须,值可空字符串。鼠标悬停在搜索框时,最下状态栏会出现的文字
如目标网站为🔞的
还需在SPECIAL_WEBSITES加进 爬虫名字wnacg (此处影响存储位置)
在SPECIAL_WEBSITES_IDXES加进 序号3² (此处影响gui逻辑)
3. ui 代码
GUI/mainwindow.py
在 setupUi 里加入如下类似代码(需参考 variables/__init__.py 的 SPIDERS 避免使用重复序号导致覆盖)
self.chooseBox.addItem("")
self.chooseBox.setItemText(3, _translate("MainWindow", "3、wnacg🔞")) # 🔞标识符不影响任何代码4. 无GUI测试
python crawl_only.py -w 3 -k 首页 -i 15. GUI测试
python CGS.py,对进行开发的网站测试流程是否正常,然后测试其他网站有没受影响
注意: 当
ComicSpider/settings.py里的LOG_FILE不为空时,控制台不会打印任何信息,只会在日志log/scrapy.log中输出,无论什么日志等级
反之想让控制台输出时将其值置为空,在commit时需要改回来
