记一下要做的事、爬虫系统更新

举报
冬晨夕阳 发表于 2022/03/30 00:30:42 2022/03/30
【摘要】 公司有一项业务是做某电商网站信息收集。 系统是基于Scrapy框架开发的,由于python自身的队列不支持分布式,采用了Redis来作为url排重和队列,以实现爬虫的分布式抓取;存储采用的是mongod...

公司有一项业务是做某电商网站信息收集。

系统是基于Scrapy框架开发的,由于python自身的队列不支持分布式,采用了Redis来作为url排重和队列,以实现爬虫的分布式抓取;存储采用的是mongodb数据库;动态网页采用的是Selenium模拟浏览器加载。其中实现了信息标题、时间、内容的自动抽取,类别等的自动划分等功能。

做计划时把爬虫的改版任务列入计划中,我粗略规划了下下一步要改进的方面:
1、增加可视化调度系统
目前版本的爬虫系统的启动、停止、重启只能通过登录每台虚拟机通过命令行的方式进行操作,费时费力。采用图形化的调度处理,点点按钮就可以启动、停止爬虫线程,方便快捷,而且可以实时监控爬虫的运行状态。
初步规划使用可视化调度架构Dagobah实现。

2、改变爬虫部署环境
目前爬虫部署方式是,在服务器下用VMWare建立多个Linux虚拟机,分别用来部署爬虫。这种方式的缺点是对资源消耗较多,且难以维护。
规划使用Docker作为爬虫的部署容器

3、动态页面处理
目前爬虫系统内部处理动态页面都是采用PhantomJS来模拟浏览器,但整体效率感觉还是达不到要求。Scrapy官方推荐的处理动态页面的方式为scrapyjs,规划改用这种方式。

4、系统故障预警
像爬虫系统这样要求实时性较高的系统,故障预警显得尤为重要,能够避免因程序、网络或数据库故障导致数据抓取保存失败,而相关人员却不知道而造成的损失。
规划在程序中加入相关监控机制,出现故障及时邮件通知相关人员。

5、数据存储方式
目前版本系统的数据是存储在mongodb中,初期这种存储方式效率会很高。但随着数据量的不断增加,查询写入速度会变的越来越慢。
规划下个版本改用HBase作为抓取数据的存储方式。

6、增加消息队列
目前版本系统数据都是直接操作数据库进行数据的存取的,但是这种方式随着爬虫线程的增加,对数据库会造成很大的压力。
下个版本规划使用kafka做消息队列,所有数据都通过kafka再实例化到数据库。

7、数据可视化
开发数据可视化系统,以图形图像方式展现数据。可使用的框架有D3.js、Echarts等。

8、页面配置优化
目前我们的抓取规则都是通过人工配置XPath的方式,从浏览器复制xpath再粘贴到配置页面,还是有些麻烦的,下个版本计划做一个类似八爪鱼那样的配置客户端,通过集成模拟浏览器,来实现区域的选中,省去了复制粘贴的繁琐。

以上就是规划的下个版本要优化的功能,可以看出真正的抓取功能只是占整个系统的很少的一部分,大部分还是集中在系统的完整性和数据的展现方面。

文章来源: blog.csdn.net,作者:考古学家lx,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_43582101/article/details/89448038

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。