python模拟浏览器请求的库_Python网络爬虫之Urllib库使用进阶

原标题:Python网络爬虫之Urllib库使用进阶

当向web服务器发送请求时,如果单纯的发送一个URL地址,有些站点是根本不会去响应的,尤其设置了一定反爬能力的站点,下面就结合urllib库的使用,讲解一些怎么规避站点反爬的设置。

1 设置Headers

为了不让站点认为我们不是用浏览器发出的正常响应需求,那么我们就要看看浏览器在发送请求时都干了些什么?

打开浏览器,这里强烈建议大家使用chrome浏览器,其自带的开发者工具将大大加快你的开发效率;然后,按F12键,就可以进入开发者的模式,如下图:

选择右上边的Network选项,按F5键刷新一下,可见页面进行多次响应和加载,这是因为一个正常的页面展示要完成多次请求,包括JS和CSS,让我们定位到第一次请求,如下图:

在请求Headers卡项中,有一个Response Headers,切记这是浏览器给服务器的响应头部,不是web服务器给浏览器的。其中包括了诸如文件编码、压缩方式、Cookie等,其中有一个很重要的反爬判断参数就是User-Agent,意思是请求代理。远程站点据此可以判断是否是真正的浏览器发出的请求。

据此,我们在构建自己的访问请求时,也要模拟浏览器,设置一个包含代理参数的Headers,User-Agent的内容可以复制自己浏览器的值,具体代码如下:

当然除了必要的User-Agent参数外,还可以参考浏览器Headers内容,添加其他参数,这里就不再赘述。

2 Proxy(代理)设置

当我们频繁的向一个站点发出请求时,由于访问次数太多,设置了反爬功能的站点就会禁止你的IP进行访问,如果这样不就惨了,所以要换个代理IP帮我们抓取网页,为了防止IP被禁,隔一段时间就换一个,这样就可以顺顺利利的抓取了。

设置代理ip代码如下:

3 Timeout设置

当一些网站的响应速度太慢时,可通过设置urlopen函数中的timeout参数值,来避免由于网站响应过慢给后续操作带来的影响,代码片段如下:

4 HTTP的PUT和DELETE方法

前面讲过HTTP总共有6种请求方法,分别是get、head、put、delete、post和options,有时候会用到PUT和DELETE方法,不过情况比较少。

PUT这个方法比较少见,HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。

DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值