刷新页面抓包,找到接口,记为接口1
分析请求头部,需要请求参数encryStr和MmEwMD,写请求时发现只需要encryStr,MmEwMD可以不带
在页面上搜索,抓包分析
发现有接口直接返回encryStr,记为接口2
分析请求头部只需要输入的关键字
可以看出encryStr是加密后的公司名称字符串,接口2通过加密的字符串获得黑名单信息,而接口1通过明文字符串获得加密字符串
所以爬虫思路:
1.输入明文通过接口1获取加密字符串encryStr
2.输入加密字符串通过接口2获取黑名单信息
遇到的问题:
1.可能会遇到请求失败、接口调用失败等不能获取数据问题,需要添加重试功能,获取失败公司添加到列表重新获取
2.黑名单数据类型有两类,分别处理
3.数据类型”失信黑名单-法人”可能有多条数据,可以根据案号循环并按照格式生成多条数据,但在保存到数据库时,多条数据自动生成的id一样,只存入了第一条数据,使用md5压缩后的案号作为插入时的id来确保数据可以正常插入
4.有访问频率限制,而且请求速度比较慢,使用代理ip,使用30个协程来处理
待改进:
1.代理池https和http混合,网站使用https,且抓到的代理质量不好,需要修改代理池相关代码
2.接口调用失败率较高,失败重试功能不够好,需要重写
3.使用轻量级的requests+协程的方式实现并发,因为访问速度和代理质量,效果不是很好。准备使用scrapy来处理大量数据和异常重试