1.网络爬虫之Requests库详解
2.详解 Requests 库的完整用法
网络爬虫之Requests库详解
网络爬虫是一种程序,主要功能是源码将互联网上的网页下载到本地,并从中提取相关数据。完整这类程序可以自动浏览网络信息,源码并根据预设规则下载和提取信息。完整
网络爬虫的源码抄底逃顶选股指标源码应用场景包括:搜索引擎、抓取商业数据、完整舆情分析、源码自动化任务等。完整
HTTP基础
HTTP(Hyper Text Transfer Protocol,源码超文本传输协议)是完整互联网上应用最广泛的一种网络协议。所有的源码网络文件都必须遵守这个标准,最初设计HTTP的完整目的是为了提供一种发布和接收HTML页面的方法。HTTP是源码一种基于"请求与响应"模式的、无状态的完整应用层协议。
HTTP协议采用URL(Uniform Resource Locator,统一资源定位器)作为定位网络资源的标识符。URL由4部分组成:协议、主机、端口、bios汇编源码路径。URL的一般语法格式为:protocol://hostname[:post]/[path]
例如:
ke.qq.com/course/package...
blog.csdn.net/Dream_Gao...
HTTP请求可以理解为从客户端到服务器端的请求消息。无论是人类操作浏览器还是爬虫,当希望从服务器请求服务或信息时,都需要首先向服务器端发出一个请求,然后服务器返回响应,最后连接关闭,这就是Web服务的流程。
HTTP对资源的操作方法及说明
以上方法中,GET、HEAD是从服务器获取信息到本地,PUT、POST、PATCH、DELETE是从本地向服务器提交信息。
请求头:包含许多有关客户端环境和请求正文的有用信息。一般网站服务器最常见的反爬虫措施就是通过读取请求头部的用户代理(UserAgent)信息来判断这个请求是来自正常的浏览器还是爬虫程序。
requests库详解
requests库是用Python语言编写,用于访问网络资源的innosetup源码开发第三方库,它基于urllib,但比urllib更加简单、方便和人性化。通过requests库可以帮助实现自动爬取HTML网页页面以及模拟人类访问服务器自动提交网络请求。
(1)安装requests库:pip install requests
(2)导入requests库:import requests
(3)构造一个向服务器请求资源的request对象,例如:requests.get(url)
(4)获取一个包含服务器资源的response对象,例如:res=requests.get(url)
(5)获取响应内容,例如:res.text、res.content 等
requests库的主要方法
通过查看源代码,可知get()、post()、head()、put()、patch()、delete()方法内部其实都是调用了request()方法,只是传递的method参数不同。
request(method, url,**kwargs):用于创建和发送一个Request请求。method参数用于指定创建Request请求的方法,有GET、wsl源码解读POST、OPTIONS、PUT、HEAD、PATCH、DELETE等。url表示拟访问页面的网址,kwargs表示控制访问的可选参数,有params、data、json、headers、cookies、files、auth、timeout、allow_redirects、proxies、verify、amd源码githubstream、cert 等。该方法最终返回一个Response对象。
Kwargs可选参数
对于encoding属性来说,如果header中不存在charset,则认为编码是ISO--1,text属性根据encoding属性的编码方式显示网页内容,当编码方式不一致时,可能会出现乱码。apparent_encoding属性根据网页内容分析出的编码方式,可以看做是encoding属性的备选。
requests访问时可能的异常
response对象中提供了一个raise_for_status()方法,该方法内部对状态码status_code进行判断,如果状态码不是,将会抛出 HttpError异常。
代码实践
(1)使用requests访问网页的通用框架
(2)使用requests下载
(3)使用requests发送get请求传递参数
(4)使用requests发送post请求传递参数
(5)使用requests下载视频并显示下载进度
相关代码资源 点击这里获取
详解 Requests 库的用法
如果你已熟练掌握了多线程与多进程的技巧,那么恭喜你,你的爬虫编程技能已上了一个新的台阶。不过,我们仍需继续前进,因为道路还很漫长。接下来,本文将重点介绍一个Python库——Requests,它是urllib库的优秀替代品。
Requests库的官方说明充满霸气:“Requests是Python中唯一无转基因的HTTP库,安全供人类使用。”正因为其使用方面更人性化、更简洁、更舒适,以及被Google、Microsoft、Amazon、Twitter等国际知名公司采用,我们有必要深入学习Requests库。学习之前,让我们了解它具备哪些特性。
具体如下:
1. 安装Requests:安装它有两种方法。推荐使用简单又方便管理的git克隆源码库或直接从GitHub下载源码压缩包,接着进入requests目录执行相关命令。
2. 发起请求:通过Requests库向百度贴吧发起HTTP请求并获取页面源代码。使用POST请求网页时,只需将get替换为post即可。
3. 传递URL参数:在请求时,常需携带参数。Requests提供了params关键字参数来满足需求,params为字符串字典,构建并赋值即可。无需考虑编码问题,Requests会自动处理。用法如下:
字典为空不会被拼接到URL中。参数拼接顺序随机,不按写在前面优先拼接。
为什么会有"+"号?Requests为替代空格自动转化。
4. 构造请求头:为了使Requests发起的HTTP请求伪装成浏览器,使用headers关键字参数。headers参数同样为字典类型,具体用法见代码。
5. 使用data参数提交数据:data参数常与POST请求方式结合使用,传递字典给data参数以提交表单数据或JSON数据。
6. 使用代理:有些网站限制浏览频率,使用代理可突破限制。需使用proxies参数,proxies为字典类型。除支持HTTP代理外,Requests在2.版本新增支持SOCKS协议代理。
7. 设置请求超时:在使用代理发起请求时,可能因代理失效导致请求失败,因此需设置请求超时,发现请求超时后更换代理重连。
8. 使用Cookie:请求结果中获取Cookie值,可直接访问。发送cookies到服务器,使用cookies参数,参数为字典类型。
9. 响应结果:使用Requests请求无需担心编码问题,感觉太人性化。请求发出后,Requests基于HTTP头部推测响应编码,访问response.text时使用推测的文本编码。改变response编码格式,可这样做:
. 二进制响应内容:非文本请求以字节形式访问响应体。Requests自动解码gzip和deflate传输编码的响应数据。
. JSON响应内容:Requests内置JSON解码器,处理JSON数据。JSON解码失败,response.json()会抛出异常。
. 响应状态码:根据响应码判断请求结果,获取状态码方法如下。Requests内部提供状态表,若需判断状态码,查看requests.codes源码。
高级用法包括:
. 重定向与请求历史:某些页面进行重定向处理,Requests自动处理所有重定向,包括和状态码。使用response.history追踪重定向。禁用重定向处理,可使用allow_redirects参数。
. 会话:Requests支持session跟踪用户连接。例如跨请求保持cookie,可这样操作。
. 身份认证:有些web站点需要身份认证才能访问。Requests支持HTTP Basic Auth、netrc认证、摘要式身份认证、OAuth 1认证等。
本文为原创发布于微信公众号「极客猴」,欢迎关注获取更多原创分享。