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后再次进行爬取。 |
说点什么...