关灯
请选择 进入手机版 | 继续访问电脑版
16度天空 门户 经验总结分享 查看内容
0

Python网络爬虫入门教程:python爬虫设置HTTP的方法

摘要: Python网络爬虫入门教程之设置HTTP的方法知识普及,对于如何使用urllib库中的GET与POST方法获取网页内容已经做了详细的介绍。其实HTTP的请求方式除了GET与POST外,还包括PUT、HEAD、DELETE、OPTIONS、TRACE、CONNECT ...
Python网络爬虫入门教程之设置HTTP的方法知识普及,对于如何使用urllib库中的GET与POST方法获取网页内容已经做了详细的介绍。
其实HTTP的请求方式除了GET与POST外,还包括PUT、HEAD、DELETE、OPTIONS、TRACE、CONNECT。
其中最常用请求方式是GET与POST,各类型主要作用如表所示。

GET请求实战    
首先打开首页,然后检索关键词python,查看查询结果,并观察URL变化,如图所示。
在检索关键词python后URL变为,这里keywords=python刚好是需要查询的信息,因此字段keywords对应的值就是用户检索的关键词。由此可见,在查询一个关键词时,会使用GET请求,其中关键字段是keywords,查询格式就是keywords=关键词。
若要实现用爬虫自动地在扣丁学堂上查询关键词是php的结果,示例代码如例所示
执行以上代码之后,在对应目录下已经出现php.html文件,打开该文件,结果如图所示。
上述示例中存在一个问题,当要检索的关键词是中文时,例如keywd =‘开发’,继续执行代码则会出现如下错误:
可以看出,上述代码由于编码问题出错,修改代码如例3-4所示。
例中使用urllib.request.quote()对关键词部分进行编码,编码后重新构造完整URL。关于GET请求的实例就介绍到这里,希望大家多多练习并可在其他网站上尝试操作。

设置代理服务
前面讲解的都是如何爬取一个网页内容,前提是客户端使用的IP地址没有被网站服务器屏蔽。
当使用同一个IP地址频繁爬取网页时,网站服务器极有可能屏蔽这个IP地址。解决办法就是设置代理服务IP地址。
获取代理IP主要有如下几种方式:
IP代理池——部分厂商将很多IP做成代理池,提供API接口,允许用户使用程序调用。
VPN——国内外都有很多厂商提供VPN服务,可以分配不同的网络路线,并可以自动更换IP,实时性高,速度快。
ADSL宽带拨号——ADSL宽带拨号的特点就是断开再重新连接后,分配的IP会变化。
从图中可看出,上面网址提供了大量的代理IP地址,应尽量选用验证时间较短的IP用作代理。
接下来通过一个示例示范使用代理IP进行爬取网页,比如选用上图中第一个IP地址,端口号为8123的代理IP。具体代码如例所示。

首先创建函数use_proxy(proxy_addr, url),该函数的功能是实现使用代理服务器爬取URL网页。
其中,第一个形参proxy_addr填写代理服务器的IP地址及端口,第二个参数url填写待爬取的网页地址。
通过urllib.request.ProxyHandler()方法来设置对应的代理服务器信息,接着使用urllib.request.build_opener()方法创建一个自定义的opener对象,该方法中第一个参数是代理服务器信息,第二个参数是类。
urllib.request.install_opener()创建全局默认的opener对象,那么在使用urlopen()时也会使用本文安装的全局opener对象。
因此下面可以直接使用urllib.request.urlopen()打开对应网址爬取网页并读取,紧接着赋值给变量data,最后将data的值返回给函数。
如果使用代理IP地址发生异常错误时,排除代码编写错误的原因外,就需要考虑是否为代理IP失效,若失效则应更换为其他代理IP后再次进行爬取。

鲜花

握手

雷人

路过

鸡蛋

说点什么...

已有0条评论

最新评论...

本文作者
2021-6-10 22:00
  • 0
    粉丝
  • 144
    阅读
  • 0
    回复
图集
热门评论
热门图文
排行榜

关注我们:16度天空

微信公众号

手机网页版

联系博主:16度天空

记录生活点滴、分享工作经验、追忆创作时光的自媒体个人博客

写给自己,留给未来,相约分享心情,随笔记录人生,写作记录生活-成长,分享,在路上!

网址:http://www.sky16.cn

Copyright   ©2017-2018  16度天空Powered by技术支持:玉乡广告传媒  联系QQ:1309089920  ( 豫ICP备18036994号 )