网络爬虫的常用技术

417次阅读
没有评论

Python中实现HTTP网络请求常见的3种方式为:urlib,urllib3和requests。下面将一一进行介绍

1.urllib模块

urllib是Python自带模块,该模块中提供了一个urlopen()方法,通过该方法指定URL发送网络请求来获取数据。urllib提供了多个子模块,具体的模块名称与含义如下:

模块名称 描述
urllib.request 该模块定义了打开url(主要是HTTP)的方法和类,如身份验证、重定向、cookie等
urllib.error 该模块主要包含异常类,基本的异常类是urlerror
urllib.parse 该模块定义的功能分为两大类:URL解析和URL引用
urllib.robotparser 该模块用于解析robots.txt文件

通过urllib.request模块实现发送请求并读取网页内容的简单实例如下:

网络爬虫的常用技术

上面的实例中,是通过get请求方式获取百度的网页内容。下面通哪个更使用urllib.request模块的post请求实现 获取网页信息的内容,实例如下:

网络爬虫的常用技术

这里通过http://httpbin.org/posr网站进行演示,该网站可以作为联系使用urllib的一个站点使用,可以模拟各种请求操作。

2.urllib3模块

urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3.urllib3提供了很多Python标准库里没有的重要特性:
(1)线程安全

(2)连接池

(3)客户端ssl/TLS验证

(4)使用多部分编码上传文件。

(5)Helpers用于充实请求并处理HTTP重定向

(6)支持gzip和deflate编码

(7)支持HTTP和socks代理

(8)100%的测试覆盖率

通过urllib3模块实现发送网络请求的实例代码如下:
网络爬虫的常用技术

post请求实现获取网页信息的内容,代码如下:

网络爬虫的常用技术

3.requests模块

requests是Python中实现HTTP请求的一种方式,reques是第三方模块,该模块在实现HTTP请求是要比urllib模块简化很多,操作更加人性化。在使用reques模块时需要执行pip install requests代码进行该模块的安装。requests功能那个特性如下。

(1)Keep-Alive &连接池

(2)国际化域名和url

(3)带持久Cookie的会话

(4)浏览器 式的SSL认证

(5)自动内容解码

(6)基本/摘要式的身份认证

(7)优雅的key/value Cookie

(8)自动解压

(9)Unicode响应体

(10)HTTP(S)代理支持

(11)文件分块上传

(12)流下载

(13)连接超时

(14)分块请求

(15)支持.netrc

以GET请求方式为例,打印多种请求信息的实例代码如下:

网络爬虫的常用技术

以post请求方式,发送HTTP网络请求的实例代码:

网络爬虫的常用技术 

requests模块不仅提供了以上 两种常用请求方式,还提供一下多种网络请求方式。代码如下:

requests.put('http://httpbin.org/put',data={'key':'value'}) #put请求 requests.delete('http://httpbin.org/delete') #delete请求 requests.head('http://httpbin.org/get') #head请求 requests.options('http://httpbin.org/get') #option请求

 如果发现请求的url地址中参数是在“?(问号)”的后面,例如,httpbin.org/get?key=val.requests模块提供了传递参数的方法,允许用户使用params关键字参数,以一个字符串字典来提供这些参数。例如,用户想传递key1=value1和key2=value2到httpbin.org/get,那么可以使用以下代码

import requests payload={'key1':'value1','key2':'value2'} #传递的参数 #对需要爬取的网页发送请求 response=requests.get("http://httpbin.org/get",params=payload) print(response.content) #以字节流形式打印网页源码

 

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-24发表,共计1881字。
新手QQ群:570568346,欢迎进群讨论 Python51学习