1、网络爬虫之规则之requests库入门

导学:掌握定向网络数据爬取和网页解析的基本能力
一、 Requests库入门

公认的爬取网页最好的第三方库,简单和简洁
import requests
r = requests.get('http://www.baidu.com')
num = r.status_code    #状态码
print(num)
r.encoding =  'utf-8'
print(r.text)

requesrs库主要有7个方法
requests.request()    #构造一个请求,支撑以下各方法的基础方法

requests.get()          #获取HTML网页的主要方法,对应于http的get

requests.head()      #获取HTML网页头信息的方法,对应于http的head

requests.post()        #向HTML网页提交post请求,对应于http的post

requests.put()         #向HTML网页提交put请求,对应于http的put

requests.patch()         #向网页提交局部修改请求,对应于http的patch

requests.delete()          #向页面提交删除请求,对应于http的delete

1、requests.get()
r = requests.get(url,params = None,**kwargs)    #涉及Request和Response两个对象,其中Response对象包含爬虫返回的所有内容
Response对象的属性
r.status_code           #http请求的返回状态,200表示连接成功,404表示失败
r.text                       #http响应内容的字符串形式,即URL对应的页面内容
r.encoding              #从http header中猜测的响应内容 编码方式
r.apparent_encoding          #从 内容中分析的响应内容编码方式(备选编码方式),能更准确解码
r.content                            #http响应内容的二进制形式,可用于 还原二进制形式的图片等

基本流程:

1、网络爬虫之规则之requests库入门_第1张图片

2、爬取网页的通用代码框架
requests库的异常:
     requests.ConnectionError          #网络连接错误异常,如DNS查询失败、拒绝连接等
     requests.HTTPError                    #http错误异常
     requests.URLRequired                #URL缺失异常
     requests.TooManyRedirects       #超过最大重定向次数,产生重向异常
     requests.ConnectTimeout          #连接远程服务器超时异常
     requests.Timeout                       #请求URL超时,产生超时异常,指发出到获得整个过程的
理解requests库的异常:
     r.raise_for_status()                         #如果返回不是200,产生 requests.HTTPError

1、网络爬虫之规则之requests库入门_第2张图片

涉及到异常,采用try和except。
通用代码框架:实际上意义在于使得代码更有效和稳定!!

3、http协议与requests库
http协议:hypertext transfer protocol ,超文本传输协议,一个基于请求和响应,的无状态的应用层协议。
http协议采用url作为定位网络资源的标识:
     URL格式:http://host[:port][path]
          host——合法的Internet主机域名或IP地址
          port——端口号,缺省端口为80
          path——请求资源的路径(内部路径)
     实例:
      http://www.bit.edu.cn                         #北京理工大学校园网首页
      http://220.181.111.188/duty                #这样一台IP主机上duty目录下的相关资源
http url的理解:
url是通过http协议存取资源的Internet路径,一个url对应一个数据资源。
http协议对资源的操作
get ——请求获取url位置的资源(全部资源)
head——请求获取url位置资源的响应消息报告,即获得该资源的头部信息   
post——请求向url位置的资源后 附加新的数据
put——请求向url位置存储一个资源, 覆盖原url位置的资源
patch——请求 局部更新url位置的资源,即改变该处资源的部分内容( 节省网络带宽
delete——请求删除url位置存储的资源
理解:
     把互联网(Internet)当成一个云端,那么云端上存储的资源,则以url来标识( 可以通过url进行定位),可以通过上面六大操作对资源进行管理!!
注意:
     http协议方法与requests库方法一一对应,另外,在更改资源时,会根据提交的资源的类型进行整理,放到对应相关字段下,例如post一个字典,会自动编码为form(表单),放到表单字段下,而当post一个字符串时,则会自动编码为data,从而放到data字段下。
    
4、requests库主要方法解析

1、网络爬虫之规则之requests库入门_第3张图片

requests.request(method,url,**kwargs)              #**kwargs控制访问参数
method——请求方式,对应get/put/post等7种方法
     r=requests.request('GET',url,**kwargs )             #效果等同于requests.get(),因为get方法是基于request方法封装起来的,下面的同理!!
     r=requests.request(' HEAD',url,**kwargs )
     r=requests.request('POST',url,**kwargs )
     r=requests.request('PUT',url,**kwargs )
     r=requests.request('PATCH',url,**kwargs )
     r=requests.request(' delete',url,**kwargs )
      r=requests.request(' OPTIONS',url,**kwargs )        #获取服务器和客户端打交道的一些参数
url——获取页面的url链接
**kwargs——控制访问的参数,共13个(也就是可选项)
      params——字典或字节序列,作为参数增加到url中
     data——字典、字节序列或文件对象,作为request的内容(也就是url对应位置作为数据存储)
               eg:body = "主体内容"
               r = requests.request('post','http://python123.io/ws',data = body)
     json——JSON格式的数据,作为request的内容
     headers——字典,http定制头(http的头字段)
     cookies——字典或CookieJar,request中的cookie
     auth——元组类型,支持http认证功能
     files——字典类型,传输文件
               fs = {'file':open('data.xls','rb')}             #字典
               r = requests.request('post','http://python123.io/ws',files = fs)    #用open的方式打开文件,并与file作为关联,对应到相关的url上
     timeout——设定超时时间,以秒为单位
     proxies——字典类型,设定访问代理服务器,可以增加登录认证
               pxs = { 'http':'http://user:[email protected]:1234'                               
                              'https':'https://10.10.10.1:4321'}                                              #增加两个代理,前一个是http访问时可以增加用户名,密码的设计;后一个是https的代理服务器:这样访问时使用的ip地址即为该代理服务器ip地址,可以隐藏爬取网页的原ip地址。
               r = requests.request('GET','http://www.baidu.com',proxies = pxs)
     allow_redirects——True/False,默认为true,重定向开关
     stream——true/false,默认为true,获取内容立即下载开关
     verify——true/false,默认为true,认证ssl证书开关
     cert——本地ssl证书路径

requests.get(url,params=None,**kwargs)   #参数与以上参数一样,其中**kwargs是上面提到的除了params参数以外的12个参数
requests.head(url,**kwargs)   #**kwargs同理为以上提及的13个参数
requests.post(url,data = None, json = None, **kwargs)   #同理,接下来的方法皆同理
requests.put(url,data = None, **kwargs)
requests.patch(url,data = None, **kwargs)
requests.delete(url, **kwargs)

注意:
     网络连接有风险
     异常处理很重要
     r.raise_for_stastus()为核心代码,作用是指返回为200,连接正常,如果不是,则是异常!

你可能感兴趣的:(python网页爬虫学习笔记)