网络爬虫-爬取有效机构查询网(CNAS)全量数据

本文介绍了一种使用Python的requests库和自定义验证码识别接口来抓取目标网站数据的方法。通过分析网站结构,利用XPath和正则表达式进行数据匹配,实现了全量数据的爬取,并保存为CSV格式,确保了数据的完整性和准确性。

目标网站 --> 有效机构查询网

需求如下:在这里插入图片描述

在这里插入图片描述

咋一看 不太难 全是静态html 且数据也都是规则的 这时候xpath工程师的作用就体现了!

于是乎先开始抓接口 查询接口

在这里插入图片描述
在这里插入图片描述

这里出现了个验证码 而且是会后端验证的(有那种只是前端验证不给后端验证的忽悠人的验证码) 还好是普通的数英验证码 直接调用我以前的接口就行

        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36"
        }

        s = requests.Session()

        r = s.get('https://las.cnas.org.cn/LAS/publish/externalQueryL1.jsp', headers=headers)
        print(r.text)

        r = s.get('https://las.cnas.org.cn/LAS/verify/getValidateCode.action?fleshCode={0}'.format(str(random.uniform(0, 1))), headers=headers)
        with open('verify.jpg', 'wb') as f:
            f.write(r.content)

        url = 'http://127.0.0.1:4006/verify' # 验证码识别接口(自启) 有需要的童鞋可以留言找我获取 支持大多数4-6位数英验证码

        data = open("verify.jpg", "rb").read()

        verify = requests.post(url, data=data).json().get('code')
        print(verify)

把验证码这一块破解之后 后续的就挺简单了 xpath+re 解决一切数据匹配问题

另外多提一句 保存CSV格式文件为防止乱码 encoding应该设为utf-8-sig

        with open('lasCnas{0}.csv'.format(city), 'a+', encoding='utf-8-sig', newline='') as csvfile:

            spamwriter = csv.writer(csvfile, dialect=('excel'))
            # 设置标题
            spamwriter.writerow(["公司名", "注册编号", "报告", "联系人", "联系电话", "邮政编码", "传真号码", "电子邮箱", "单位地址", "认可有效期", "暂停项目/参数", "网站地址", "认可能力范围"])

github传送门 --> 爬取有效机构查询网(CNAS)全量数据

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值