分布式机器 centos7 tkinter sed rspec path vue中文网 centos查看php版本 hbase端口 ceb转换成pdf在线转换 edate函数的使用方法 office配置进度 mysql建表主键自增长 kubernetes视频 python for循环 python安装mysql python中str函数 python下载安装教程 java数据库连接 java实用教程 java字符串替换 java获取当前ip java如何配置环境变量 java字符串匹配 javaenum java连接sql数据库 java字符 java定义 网页游戏开发入门 popen din字体 winhex使用教程 idea重命名快捷键 keytool下载 jlabel studioone 动漫情侣头像一男一女 混凝土配合比计算软件 js回调函数 苹果x怎么用
当前位置: 首页 > 学习教程  > 编程语言

爬虫练习之了解反爬虫机制

2021/2/13 17:16:54 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

没学习之前我理解字面意思就是你爬虫网站,然后该网站顺着你的ip等会对你的网络电脑等造成损失 爬虫 —— 使用任何技术手段批量获取网站信息的一种方式,关键在批量。反爬虫 —— 使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。…

没学习之前我理解字面意思就是你爬虫网站,然后该网站顺着你的ip等会对你的网络电脑等造成损失

  • 爬虫 —— 使用任何技术手段批量获取网站信息的一种方式,关键在批量。
  • 反爬虫 —— 使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。关键也在于批量

最简单的是你爬网站获取不到正确的信息

案例 爬取拉勾网python职位的薪资等

我们可以看到一般代码并不能获取到需要的信息

请求头验证。

浏览器访问网站的时候除了会发送url,参数等内容外,还会给服务器端传递一些额外的请求头(request header)。例如User-Agent,referer,host等等。简单的爬虫不做处理发送请求相关的请求头要么为空,要么没有,要么内容不对

加入请求头 request.Request

from urllib import request,parse
 
url='https://www.lagou.com//jobs/positionAjax.json?needAddtionalResult=false'
headers = {
    'Accept':'application/json, text/javascript, */*; q=0.01',
    'Referer':'https://www.lagou.com/jobs/list_python?labelWords=sug&fromSearch=true&suginput=py',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
    }
data={
    'first':"true",
    'pn':1,
    'kd':"python"
}
 
req = request.Request(url,headers=headers,data=parse.urlencode(data).encode('utf-8'),method='POST')
resp = request.urlopen(req)
print(resp.read().decode('utf-8'))

使用代理

很多网站会检测 某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数 多的不像正常人去访问,就会判别为爬虫程序并且禁止这个IP的访问。所以我们需要设置一些代理服务器,过段时间可以换一下代理IP,这样可以爬虫程序的正常运行。

urllib库中通过 ProxyHandler来设置使用代理服务器,下面做一下介绍

我们可以使用网站http://httpbin.org来查看http的一些参数信息,包括IP

#不使用代理
from urllib import request
 
#没有使用代理
url = 'http://httpbin.org/ip'
resp=request.urlopen(url)
print(resp.read())
#返回你的ip地址

常用的代理有:

https://ip.ihuan.me/check.html?proxy=NDIuMjM4LjcwLjI0MDo5OTk5

快代理: https://www.kuaidaili.com/ops/proxylist/1/
·代理云: http:// www.dailiyun.com/

from urllib import request
 
#使用代理
#1.使用proxyhandler,传入代理构建一个handler
#2.使用上面创建的handler创建一个oprner
#3.使用opener发送一个请求
url = 'http://httpbin.org/ip'
handler=request.ProxyHandler({"http":"218.60.8.83:3129"})
opener=request.build_opener(handler)
resp=opener.open(url)
print(resp.read())

1.Python网络请求错误“ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接”

解决方法:

随便什么浏览器点开设置-->代理设置-->弹出Internet属性-->局域网设置-->自动检测设置-->重启pycharm即可

<urlopen error [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。>

换个代理,付费的可能好点


本文链接: http://www.dtmao.cc/news_show_700107.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?