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

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

需求如下:网络爬虫-爬取有效机构查询网(CNAS)全量数据_第1张图片

网络爬虫-爬取有效机构查询网(CNAS)全量数据_第2张图片

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

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

网络爬虫-爬取有效机构查询网(CNAS)全量数据_第3张图片
网络爬虫-爬取有效机构查询网(CNAS)全量数据_第4张图片

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

        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)全量数据

你可能感兴趣的:(MySpider)