前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫-2019年我破解了商标网数据爬虫-破解反爬技术那些事情

Python爬虫-2019年我破解了商标网数据爬虫-破解反爬技术那些事情

原创
作者头像
孔雀
修改2019-03-15 17:30:59
6.3K5
修改2019-03-15 17:30:59
举报
文章被收录于专栏:爬虫技术爬虫技术

由于自己一直做Python大数据挖掘技术开发,最近有不少的朋友要做大数据分析,找我帮忙爬商标网的数据,实现爬取中国商标网全部数据+监控同步每天新增注册的商标数据+支持异步搜索功能,做过数据爬虫挖掘的都知道,商标网是目前国内最难爬的网站之一,因为商标网请了中国第三方权威安全机构做了各种高级的发爬措施,我相信很多做技术的朋友在爬商标网的时候会遇到以下几个问题,今天我把我的经历和解决方案分享给大家。

一、商标网到底采集了哪些反爬措施?

其实在准备爬商标网数据的时候,我对商标网的url结构、代码结构、数据加密机制进行了深度的分析,其实商标网主要采集了以下的三种反爬措施:

(1)URL加密: 当我们进入商标网查询入口时候(http://sbj.saic.gov.cn/sbcx/),首先会进入一个声明页面,您必须用鼠标点击“我接受”才能进入到商标搜索页面,这个页面的作用就是防止识别如果你直接进目标页面,因为它会自动给每个页面加入加密的url,url做了有效时间戳+加密的反爬机制,如果发现您访问您的url次数太多就直接把你封了!

(2)人机识别反爬:商标网做了人机识别的反爬技术,如果你直接用程序post模拟请求打开,直接会被封掉的。如果你用浏览器正常访问就可以访问。

(3)封IP反爬: 商标网对每个访问的用户进行IP锁定和跟踪,当我们发出去的http请求到商标网站的时候,正常情况下返回200状态,说明请求合法被接受,而且会看到返回的数据,但是商标网有自己的一套反爬机制算法,如果检查到同一个IP来不断的采集他网站的数据,那么他会被这个IP列入异常黑名单,您再去采集它网站数据的时候,那么就永远被拦截了。

二、如何破解商标网的反爬?

. 采集速度太频繁了,会被封IP问题怎么解决?

当我们发出去的http请求到商标网的时候,正常情况下返回200状态,说明请求合法被接受,而且会看到返回的数据,但是商标网有自己的一套反爬机制算法,其实很简单,用代理IP池解决封IP的问题,也就是我们每一次请求的时候都采用动态不同的代理IP方式去请求,而且这个代理IP是随机变动的,每次请求都不同,所以用这个代理IP技术解决了被封的问题。

三、 如何爬取到网所有的数据?

(1)我在写爬虫去商标网的时候,刚开始使用网上的免费或者收费的代理IP,结果90%都被封号,所以建议大家以后采集这种大数据量网站的时候 不要使用网上免费的或者那种收费的IP,因为这种ip几秒钟就会过期,意思就是你没有采集完一条数据或者刚刚访问到数据的时候,这个IP就过期了导致你无法采集成功,所以最后我自己搭建了自己的代理池解决了几千万商标网数据的采集封IP问题。(需要爬虫技术交流的朋友欢迎加我qq:2779571288)

(2)商标网有几千万的数据量,如果你想爬取所有的商标数据,我们可以从商标网的搜索规则漏洞找到破解方法,商标网的搜索页面支持按申请/注册号进行申请,并且它的注册号命名规则是昨日最后一个注册号累加+1,所以我们想爬取所有商标数据,我们可以通过分布式方式 循环注册号+1的方式来达到目的。

(3)模拟人工技术:我们采用人工智能的技术来操控浏览器,相当于模拟几十万真实的人在打开网站 然后每个人负责搜索不同的注册号得到我们需要的数据,来解决破解它的人机反爬技术。

四、建立商标智能爬虫大数据系统

1、商标网的数据包含列表数据+详细页的数据+商标流程页数据,所有我们在爬取千万级的商标数据的时候就需要把数据结构化存储,需要建立 商标基础信息表+商标流程进度表。然后需要做一套数据智能管理系统对这些数据进行管理和监控。

五、如何监控每日新增的数据?

如果我们把整个商标网的数据都爬下来了而且存储到数据库呢,那么每日新增的数据我们怎么同步一起更新下来呢?这个时候我们就需要做数据爬虫的监控任务,让这个爬虫负责监控每天新增的注册号,然后把每天新增的注册号爬取下来!具体怎么做呢?其实很简单,因为注册号的规则是昨天最后一个号码累加一,那么就从昨天最后一个号码累加循环2万次就可以实现检测得到每天最新的注册号。

六、如何实现异步搜索商标数据功能?

如果您爬下来的商标数据是做大数据创业,或者提供给其他用户来搜索用的,那么存在一个问题,如果当前用户搜索的商标你还没有爬下来怎么办呢?这个问题其实用异步搜索技术架构就可以实现了。具体思路是这样:用户搜索商标搜索商标的时候 先去自己的数据库查询如果数据库已经爬下来直接把结果返回,如果数据库尚未更新下来,离开调取异步搜索程序功能,直接打开商标网把结果先返回给用户,并且把这次搜索的结果存到数据库,这样下次另外用户再搜索同样的商标你数据库就有了!

(需要大数据爬虫技术交流的朋友欢迎加我qq:2779571288)

七、数据清洗-核心代码:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档