仅限学习交流使用,禁止商用。未经授权禁止转载
本程序可以爬取大众点评搜索页、详情页以及评论页中的相关信息,并将结果写入文件或数据库中。支持多cookie、ip代理以及多数据源爬取。
目前支持的写入类型如下:
- MongoDB数据库
csv(版本更新后不支持写入,暂时没有适配计划)
如果您需要其他数据库支持,联系我们或者您添加后提PR。
由于大众点评反爬非常非常非常非常非常严格,因此使用了cookie池、ip代理等诸多防ban手段,同时框架赋予了使用者很高的操作自由度, 这就导致需要配置的参数较多(有30多个,不过大部分都可以使用默认项),因此运行门槛相对不低。
虽然我已经尽量编写详细的使用文档,即便如此:
如果您是发现了bug或者有什么更好的提议,欢迎给我发邮件提issues、或PR,但是跟程序运行有关的所有问题请自行解决或查看这里。
不接受小白提问,自行研究。文档比较完善,阅读完完整文档后如还有有疑问,提问时请展示你思考验证的过程。
-
搜索信息(搜索结果,粗)
-
详情信息(比前一个多 地址、电话、营业时间)
-
评论信息
-
cookie池
-
ip代理
-
通过匿名接口,强势优化ip代理的作用
-
秘钥模式代理隧道支持
-
cookie动态更新(有可能缓解被ban的情况)
-
优惠券信息
语言:python3
系统:Windows/Linux/MacOS
其他环境配置:
需要:lxml、requests、tqdm、faker、beautifulsoup4、fontTools、pymongo
或者一键配置:
pip install -r requirements.txt
首先配置config.ini,参数意义在文件内已经有了详细说明,这里进行简单说明。
参数 | 说明 |
---|---|
config: | |
use_cookie_pool | 是否使用cookie池 |
Cookie | Cookie信息(注意大写,之所以不一样是方便将浏览器信息直接复制进去而不做更改)。 |
uuid | uuid信息,详见 |
tcv | tcv信息,详见 |
user-agent | 浏览器UA信息,和配置文件中说明不同的是,目前暂时不支持随机UA |
save_mode | 保存方式,具体格式参照config.ini提示。(目前只能为mongo/mongodb) |
mongo_path | mongo数据库配置,具体格式参照config.ini提示 |
requests_times | 爬虫间隔时间,具体格式参照config.ini提示。 |
detail: | |
keyword | 搜索关键字 |
location_id | 地区id,具体格式参照config.ini提示。 详见 |
channel_id | 频道id,具体格式参照config.ini提示。 |
search_url | 搜索url,详见config.ini内提示。 |
need_first | 是否只需要首页首条 |
need_pages | 需要搜索的页数(搜索页) |
proxy: | |
use_proxy | 是否使用代理 |
repeat_nub | ip重复次数,详见config.ini |
http_extract | http提取 |
key_extract | 秘钥提取 |
http_link | http提取接口 |
proxy_host | 秘钥模式服务器ip |
proxy_port | 秘钥模式服务器端口 |
key_id | 秘钥id |
key_key | 秘钥key |
然后配置require.ini,该配置文件用于选择爬取策略。
参数 | 说明 | 谨慎选择 |
---|---|---|
shop_phone: | ||
need | 是否需要店铺电话 | 否 |
need_detail | 是否需要店铺电话细节(不需要为 12345678** ,需要详情为 12345678910) | 是 |
shop_review: | ||
need | 是否需要店铺评论 | 否 |
need_detail | 是否需要店铺更多评论 (不需要则只有10条精选) | 是 |
need_pages | 如果需要更多评论,需要多少页(一页30条),取店家评论页和输入值的较小值 | 否 |
值得一提的是,对于谨慎选择的配置,由于需要登录才能获取, 因此请求会携带cookie,频繁请求会造成封号(过段时间自动解开)。
正常搜索(完整流程,搜索->详情[可选]->评论[可选]):
- 运行main.py
定制化搜索(不需要搜索,只需要详情或评论):
-
只需要详情,shop_id 自行修改 (只给命令行格式,编译器运行则自行配置或修改代码)
python main.py --normal 0 --detail 1 --review 0 --shop_id k30YbaScPKFS0hfP --need_more False
-
只需要评论
python main.py --normal 0 --detail 0 --review 1 --shop_id k30YbaScPKFS0hfP --need_more False
-
需要详情和评论
python main.py --normal 0 --detail 1 --review 1 --shop_id k30YbaScPKFS0hfP --need_more False
由于大众点评反扒措施相对严重以及不同频道字段格式复杂,因此很多数据在爬取阶段不做处理。原样保存,后续自行清洗。 (新版本由于引入接口数据,有些数据为了对齐接口存储格式不得不进行处理)
更多数据规约查看这里
关于cookie以及cookie池的一些碎碎念:这里
关于存储的一些碎碎念:这里
关于使用加密接口的一些碎碎念:这里
关于ip代理的一些碎碎念:这里
一些可能遇到的小问题:这里
如果你想加快进度,点个star吧呜呜呜