下图爬取沃保网平安保险公司和中国人寿保险公司皇冠会员和钻石会员微信号等个人信息
保存在mysql数据库中大概是这样形式,
开发环境:
乌班图、pycharm、mysql、redis、mongodb、python3
爬虫技术:
requests、redis加密对数据去重、xpath、os模块、保存csv、mysql、保存mongodb、保存二维码图片、面向对象写法
0、目标网站分析(找到post 接口URL和post参数)
找代理人,下面有旗舰会员、皇冠会员、诚信宝会员,本文爬皇冠和诚信保里面的代理人信息,接口大家看下,都一样
1、框架和库
etree:将相应的代码转成xpath可以提取的结构
pymongo: python 操作mongodb
pymysql: python操作mysql
os : 保存图片
hashlib: 对字段加密,增量爬虫用到
retry: 如果请求失败,可以设置最大请求次数
headers、post请求数据、初始化csv文件、创建数据库连接对象
4、获取数据列表
(具体提取方式请根据post请求URL查看前端代码,这一步必须动手操作,如果不动手,会永远停留在眼高手低的地步)
6、获取展业证号
因为展业证号对应的详情页有多种页面结构,所以需要根据页面中特有的信息做一些判断,选择合适的提取方式提取
7、构造增量式爬虫
8、保存mysql
同时分表存储,我这边建了两个表zgrs和zgpa,如果是新数据,并且公司名称是中国人寿,则保存在zgrs表中,如果不是中国人寿,则保存在pabx中,该步分表可以根据实际需求来做,数据量少的话不需要分表,数据量大的话可能会有分表需求
11、保存二维码图片,读取图片二进制内容,再写入文件,文件名自己手动构造成公司_等级_姓名_城市格式
整个文章爬取思路至此结束,具体细节希望大家能动手去做一下,领悟中间特别是请求数据的构造,分页,增量爬虫的思路,希望大家能体会,另外该涉及一些细节技术,比如mysql如何建表,数据保存mysql的简单方法,数据保存CSV的简单方法,等等,仍会继续出一些优惠精简的方法,欢迎持续关注
该篇文章不明白的留言,源码已经上传知识星球(左侧为知识星球,右侧二维码为微信公众号)