实验3:Python爬虫之文字验证码实战
【实验内容】
本实验主要介绍在网络爬虫数据采集的过程中出现的常见的验证码反爬手段以及解决措施。
【实验目的】
1、理解验证码反爬的背景;
2、掌握常见文字验证码反爬手段;
3、研究解决文字验证码反爬的方法;
【实验步骤】
步骤1 调研目标网站
步骤2使用验证码识别技术
步骤3 采集数据生成json文件
步骤1:调研目标网站
以江西政府采购网站(http://www.ccgp-jiangxi.gov.cn/web/)为例,当我们点击搜索按钮的时候,会弹出如下的验证码进行验证,用户需要输入对应正确的验证码才能获取数据。
/*===============================================================================================================================================*/
选择network的all,重新点击搜索框发起请求,可以看到如下请求接口正好是返回了图片的链接。
因此,只需要对此接口发起请求就能得到图片下载地址,然后在对图片地址发起请求就能将图片下载到本地。
/*========================================================*/
步骤2使用验证码识别技术
(1) 购买服务
常见的验证码识别技术有机器学习模型或第三方验证码识别服务,为了方便使用本次实验以百度云为例。
你首先需要按照提示注册一个百度云账号,然后在产品服务中搜索文字识别
************************************************************************
进入控制台后,点击应用列表,购买响应的服务,购买成功后如下图所示。
*************************************************************************
(2) 识别验证码
下载安装包,pip install baidu-aip,详情可见官方文档https://cloud.baidu.com/doc/OCR/s/wkibizyjk。
如下代码首先对图片发起请求,并将其下载到本地,然后使用baidu_client对象对图片文字进行识别,如果识别成功,则返回对应的验证码,否则捕获异常进行重新识别。
******************************************************
步骤3 采集数据生成json文件
/*====================================================================================================*/
*******************************************************************
获取子页面数据,部分代码如下所示:
*******************************************************************
解析子页面数据,部分代码如下所示,使用xpath语法与re正则获取发布时间与项目编号。
*************************************************************
/*=================================================================================================*/
*************************************************************
保存的部分json文件如下图所示。
***************************************************************