爬虫是获取数据的一种方式,网络上很多请求都是由爬虫发起的 。
说几个爬虫的实际例子:
【“爬虫”套路知多少,如何实施反爬策略?】①想要做舆论分析,分析当前热点话题 , 可以爬取腾讯新闻,微博 , 今日头条等主流站点数据,然后进行分析;
②想要做电影推荐或影评分析 , 可以爬取豆瓣,猫眼等数据进行分析;
③想要做电商销售分析,可以爬取京东,淘宝商家数据进行分析;
当我们使用高并发或者分布式爬虫对这些站点进行抓取时,可能会损害站点利益:
①短时间内大量请求占用站点资源:网络带宽 , 服务器负载;
②如果我们获取数据,自己获益 , 可能会损害他人利益;
但是百度,谷歌等搜索引擎厂商无时无刻不在抓取信息,还有很多其他企业和个人也在抓取自己感兴趣信息 。如何保护自己利益不受侵犯,企业从制定行业规范与技术两方面做了处理 , 这也是我们这节主要内容:
1.robots协议:爬虫规范;2.常见反爬机制;3.反爬机制应对方式;
<1>robots协议
robots协议是一个文本文件 , 通过协议声明站点的哪些信息可以抓取 , 哪些禁止抓取 。
robots协议位置:http://xxxx/robots.txt ;例如:百度https://www.baidu.com/robots.txt ,内容如下:
User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
… …
User-agent: *
Disallow: /
robots协议相关说明如下:
我们来简单分析下百度的robots.txt
①User-agent:Baiduspider , Googlebot…是针对的搜索引擎
②Disallow:/baidu,/s?…禁止这些搜索引擎爬取相应的资源
③User-agent: * Disallow: /:禁止其他搜索引擎爬取任何资源 , 以上列出的除外;
①User-Agent:发起请求时候添加头信息,伪装浏览器;
②短时间内访问次数限制:可以使用代理或者延时爬?。?
③登录后访问:模拟登录保存cookie,请求时添加cookie信息;
④异常登录:准备大量账号,绑定不同代理进行爬?。?
⑤验证码:使用Ocr,机器学习进行处理,但是准确率是一个问题;
⑥数据加解密处理:使用对应算法进行破解,或者使用selenium进行抓?。?
<3>例子:伪装浏览器
我们来看一个例子 , 使用浏览器访问某主页:http://www.xicidaili.com/ ;能够正常访问;然后使用urllib请求g该主页,代码如下:
from urllib import request
url= \’http://www.xicidaili.com/\’
req = request.urlopen(url)
print(req.code)
运行出错,结果如下:
HTTPError Traceback (most recent call last)
<ipython-input-6-07bc83b0cf79> in <module>()
1 from urllib import request
2 url= \’http://www.xicidaili.com/\’
—-> 3 req = request.urlopen(url)
… …
HTTPError: HTTP Error 503: Service Temporarily Unavailable
查看浏览器请求头信息与User-Agent:
当我们使用urllib请求该主页,服务器检查User-Agent,认为这次请求不是浏览器请求,所以拒绝访问;我们可以在访问时添加请求头信息设置User-Agent,代码实现如下:
from urllib import request#user-agentheaders = {\’User-Agent\’:\’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36\’}url= \’http://www.xicidaili.com/\’#创建Request对象,添加user-agent,伪装浏览器reqhd = request.Request(url=url, headers=headers)req = request.urlopen(reqhd)print(req.code)
输出结果:200 。至此,我们成功解决第一个反爬问题 。
以上就是朝夕生活(www.30zx.com)关于““爬虫”套路知多少,如何实施反爬策略?”的详细内容,希望对大家有所帮助!
猜你喜欢
- PMP项目管理师网上报名系统打不开怎么办?
- 宽带无法上网的情况有哪些?常见的宽带故障处理办法?
- 汽车发动机抖动?10招解决!
- 唐DM发动机抖动怎么解决?
- 详解凯迪拉克ATS变速箱故障维修:抖动严重,该怎么维修
- 轻踩油门有轻微卡滞,怠速时还有抖动,车主几十块钱解决问题!
- 强制关机伤害电脑?教你两招快速又不伤电脑的方法
- 2019吃鸡枪战手机游戏排行榜 让我们点燃你的热血
- 触乐夜话:扮演女性角色很重要吗?