输入要爬取的商品后自动爬取相关商品评论,数据异步持久化至MySQL数据库,支持增量爬取。
本程序不定时更新,最新功能请参见下方的“版本更新”栏目中的信息。
为使程序使用更加灵活,该程序通过配置文件对爬虫进行了各种爬取设置,可以在爬取前根据控制台菜单选项进行各种设置。
当前版本功能及可设置项目:
1、搜索指定商品
2、显示当前设置
3、设置Cookie
4、修改搜索商品API
5、修改获取评论API
6、设置爬取页数
7、初始化配置
以下指南将帮助你正确的使用该程序。
1、Anaconda3
2、MySQL
3、Scrapy
1、官网下载Anaconda3
下载地址:https://www.anaconda.com/distribution/
根据操作系统下载对应的版本
安装过程此处不赘述
2、官网下载MySQL
下载地址:https://dev.mysql.com/downloads/mysql/
根据操作系统下载对应的版本
安装过程此处不赘述,注意:安装时设置好密码,如需远程跨域写入数据需对用户进行权限设置,否则写入时会被数据库拒绝。
3、安装Scrapy
打开命令行输入pip install scrapy进行安装
如安装遇到问题请进行环境变量设置,也可使用Anaconda Prompt进行安装,同样输入pip install scrapy进行安装。
第一步:在MySQL中执行database/create_db.sql脚本创建数据库及数据表
第二步:设置爬虫
第一次得到本程序时配置文件中[my_settings]部分的cookie、keyword和[db_settings]部分的passwd以及settings.py文件中尾部的MySQL相关设置均为空,需进行设置后才可正常运行本程序。
有两种方式可以对配置文件进行设置
1、直接修改config/settings.cfg文件进行设置
2、运行run.py文件,根据控制台菜单选择相应功能进行设置
第三步:修改settings.py文件尾部的MySQL设置,填写自己的数据库信息
本程序目前仅用于测试,并未使用任何需要付费的反爬措施,爬取页数有限,登陆是使用Cookie模拟登陆,需要先使用浏览器进行登陆并复制Cookie。
如需改善可使用代理IP创建代理池、创建Cookie池等方法,进行抓取时随机选择代理IP及随机选择Cookie发出请求。
出于效率及资源消耗问题考虑,本程序未使用Selenium,并且在后续更新中也将尽量避免或巧妙使用Selenium。
如果爬取中提示出现了滑动验证,可先尝试更换cookie解决问题。
后续版本将更新自动登陆功能。
崔佳毅(JiayiCui)
版权所有:崔佳毅(JiayiCui)
未经本人许可不得应用于商业用途
如需转载请联系作者并注明出处
本程序仅用于测试学习,如他人擅自应用于商业用途,造成的法律后果与作者无关。
新增功能:
1、多商品爬取
2、动态创建爬虫
进行多商品爬取时会根据输入的商品关键词自动创建多个爬虫(每个商品创建一个爬虫),爬虫创建完毕会自动开始同步运行。
本次更新功能如遇bug也并不影响单商品爬取及设置功能。
新增模块:unit/pipelines.py unit/spiders_factory.py commands/crawlall.py
unit/pipelines.py用于分割多个商品,调用spiders_factory以商品名称创建爬虫
unit/spiders_factory.py模块是自己制作的一个爬虫模板,用于根据搜索关键词自动创建爬虫,爬虫以搜索关键词命名
commands/crawlall.py用于多爬虫同步运行
备注:由于当前版本仍未使用需要付费的反爬策略,同时多爬虫运行时出现滑动验证的几率较大,但新增的功能可以正常使用,且无重大bug。 本程序新增功能尽量采用模块化设计,本次新增功能不依赖且不影响上一版本各项功能的运行,可轻松拆装本次更新功能。
效果预览:
彩蛋!:即便scrapy项目下没有任何爬虫,也可使用本程序自动创建出适用于目前淘宝的商品评价爬虫!只需要输入商品关键词而已,剩下的一切工作本程序将自动为你完成,完全不用写任何的爬虫代码!
下一版本功能预告:
1、优化多商品爬取模块
2、爬虫管理
本次更新加入了去重功能,程序可以断点续爬
新增模块:converter.py removal.py
converter.py用于各种转换,如:md5 unicode,当前版本仅编写了md5功能
removal.py用于进行重复验证,实现去重功能,在向服务器发送请求前进行验证,如果已爬取过则不会向服务器发起请求
新增数据库表:grab_records
此表用于记录商品评论页
配合新添加的模块对spiders/alcohol.py config/config_operate.py items.py pipelines.py config/settings.cfg中的代码进行了修改
下一版本功能预告:
1、根据需求动态创建爬虫
2、根据需求添加爬虫爬取队列
增加设置爬取商品页数及评论页数功能,根据设置进行爬取
此版本修复了一些BUG并已经将数据以异步的形式持久化到本地mysql
运行前请先设置settings.py文件中的
MYSQL_HOST = ""
MYSQL_PORT =
MYSQL_DBNAME = ""
MYSQL_USER = ""
MYSQL_PASSWORD = ""
已去除BUG:上一版本每件商品只爬取到1页评论,第二页开始报错
BUG原因:爬取评论递归时漏写了meta参数
修改位置:taobao/spiders/alcohol.py中的parse_comment(self, response)函数
上一版本:yield scrapy.Request(comment_url, headers=headers, callback=self.parse_comment, dont_filter=True)
本次修复后:yield scrapy.Request(comment_url, headers=headers, meta={'headers': headers, 'item_id': item_id, 'user_id': user_id, 'title': title}, callback=self.parse_comment, dont_filter=True)