然后看爬虫执行的成功情况 。在上面提到了用任务队列控制爬虫工作 , 这样解耦可以带来很多好处 , 其中一个就是可以就是可以对一次爬虫执行进行日志 。可以在每次爬虫任务执行的时候 , 将执行的时间、状态、目标url、异常等放入一个日志系统(比如kibana) , 然后通过一个可视化的手段可以清晰地看到爬虫的失败率 。爬虫抛出的Exception 。
【你真的知道了吗,爬虫工程师】几乎所有的项目都会用到错误日志收集(Sentry) , 这里需要注意的一点是 , 忽略正常的异常(比如Connection错误 , 锁冲突等) , 否则的话你会被这些错误淹没 。三、爬虫与反爬这同样是很深的一个话题 , 就像攻击武器与防御武器一样 , 双方总是在不断升级 。常见的反爬措施(我遇到过的)有下面几种:1.访问频率很好理解 , 如果访问太频繁网站可能针对你的ip封锁一段时间 , 这和防DDoS的原理一样 。
对于爬虫来说 , 碰到这样的限制一下任务的频率就可以了 , 可以尽量让爬虫想人类一样访问网页(比如随机sleep一段时间 , 如果每隔3s访问一次网站很显然不是正常人的行为) 。2.登录限制也比较常见 。不过公开信息的网站一般不会有这个限制 , 这样让用户也麻烦了 。其实反爬措施都或多或少的影响真实用户 , 反爬越严格 , 误杀用户的可能性也越高 。
对爬虫来说 , 登录同样可以通过模拟登录的方式解决 , 加个cookie就行了(话又说回来 , 网络的原理很重要) 。3.通过Header封杀一般浏览器访问网站会有header , 比如Safari或者Chrome等等 , 还有操作系统信息 。如果使用程序访问并不会有这样的header 。破解也很简单 , 访问的时候加上header就行 。
4.JavaScript脚本动态获取网站数据有一些网站(尤其是单页面网站)的内容并不是通过服务器直接返回的 , 而是服务器只返回一个客户端JavaScript程序 , 然后JavaScript获取内容 。更高级的是 , JavaScript在本地计算一个token , 然后拿这个token来进行AJAX获取内容 。而本地的JavaScript又是经过代码混淆和加密的 , 这样我们做爬虫的通过看源代码几乎不可能模拟出来这个请求(主要是token不可能破解) , 但是我们可以从另一个角度:headless的浏览器 , 也就是我们直接运行这个客户端程序 , 这可以100%地模拟真实用户!5.验证码这几乎是终极武器了 , 验证码是专门用来区分人和计算机的手段 。
对于反爬方来说 , 这种方式对真实用户和搜索引擎(其实可以通过记录搜索引擎爬虫的ip来区别对待 , 可以解决)的危害比较大 , 相信读者都有输入验证码的痛苦经历 。但这种方法也并不是无敌的!通过现在很火的机器学习可以轻松的识别大部分的验证码!Google的reCAPTCHA是一种非常高级的验证码 , 但是听过通过模拟浏览器也是可以破解的 。
6.ip限制网站可能将识别的ip永久封杀 , 这种方式需要的人力比较大 , 而且误伤用户的代价也很高 。但是破解办法却非常简单 。目前代理池几乎是搞爬虫的标配了 , 甚至还有很多高匿代理等好用的东西 。所以这基本上只能杀杀小爬虫 。7.网站内容反爬有一些网站将网站内容用只有人类可以接收的形式来呈现(其实反爬就是区别对待人类和机器嘛) 。
- 手机像素,2500~2999
- 【今日话题】你们的旧手机怎么处理了?
- 选一个你称心如意的浏览器
- T3?
- 滕州今日房价走势,滕州明年房价走势
- 盒子桌面软件哪个好,电视盒子和第三方软件哪个好
- 大搜车怎么样,大搜车怎么样谁知道
- 干洗店加盟装修,ucc怎么加盟
- 对组织部的认识怎么写,组织部介绍怎么写
- 手机在哪,轻松帮你找到手机
