使用scrapy框架爬取prts上的干员生日信息并保存到本地,从而可以方便的使用干员-生日双向查询功能
需要python环境中至少有以下依赖:
- python 3.8及以上(没有测试过python 3.7及以下版本,最好使用3.8及以上版本的python解释器)
- scrapy包及其相关依赖包(如lxml、twisted等)。
- pyqt包及相关依赖包。
在requirements.txt文件中即可看到项目依赖。
在Arknight_operators_birthdays/文件夹中使用以下命令即可完成爬取(需等待一段时间完成)。
python run.py爬取完成后在Arknight_operators_birthdays/文件夹下(即项目根文件夹下)能看到arknights.json文件。若该文件有新写入的内容则说明爬取成功。
如使用图形界面的方式启动,启动方式有如下两种:
- 在pycharm等IDE中运行View/MainInterface.py,运行成功即可看到图形界面,通过图形界面进行对应操作即可。
cd到View文件夹下,使用以下命令启动:
python MainInterface.py如使用命令行的方式进行查询,通过命令python启动对应命令即可。
示例:
python birthday_search.py推荐使用图形界面的方式启动,功能相对通过命令行启动的方式更为丰富。
注意,必须要先完成爬取,将信息保存到本地后才能使用查询功能。
- 增加了图形界面。
- 通过设置并行请求数提高了爬虫速度,在网络状况良好的情况下能更快完成信息爬取。
- 可在middlewares处设置随机UA,使并发爬虫更容易通过。
- 在settings.py文件中设置了UA表用于随机UA访问网站,同时在middlewares.py中做出了对应的修改。
- 修改了爬虫完成信息爬取后弹出的信息框按钮,可直接在按钮中进行重新爬取。
采用了随机UA后发现效果并不理想,耗费时间多于并发爬取、单UA设置的耗费时间,因此改回使用单UA,若要修改随机UA则只需要在settings.py中取消注释即可。
- 添加了icon,同时修改了一下面板
- 尝试使用pyinstaller输出exe文件,但会出现路径问题及窗口重复出现的问题,还是直接通过python解释器运行比较稳定。
- 完善了README.MD文件。
- 在“按照日期搜索同一天生日的干员”面板中,加入了输入“今天”就能直接查询系统当天日期的生日干员,更为人性化。
- 删除不必要的文件、忽略了不必要的文件上传(如弃用的pickle模块、忽略了__pycache__文件夹)
- 将图形界面所使用到的api文件转移到了View文件夹中。
- 现在可在命令行方式启动中通过输入
今天得到今天所对应的生日干员。 - 现在可以通过命令行而不是pycharm直接启动图形界面。
- 偶尔会出现某些干员检索不到的情况,可能由网速不佳、请求失败引起。重新爬取信息后解决。