python爬虫之requests库

 

什么是Requests

 

Requests 是用python语言编写,基于urllib,采用Apache2 Licensed 开源协议的HTTP库。它比urllib 更加方便,可以节约我们大量的工作,完全满足HTTP 测试需求。

 

一句话——python实现的简单易用的HTTP

 

 

Requests的安装

pip install requests.

 

 

相关用法

1. import requests

   response = requests.get(‘’https:// www.baidu.com/) #返回网页的内容

   print(type(response))  #类型 request.Models.Response

   print(response.status_code)  #返回一个状态码  200访问成功

   Print(type(response.text)) #返回响应内容的字符串形式

   Print(response.headers)  #返回get请求获得页面的头部信息

   Print(response.cookies)

Print(response.encoding )#http header中猜测出来的响应内容的编码格式

Print(response.apparent_encoding)  #从内容中分析响应内容的编码格式

 

 

#text乱码时候

r.encodong=utf-8  即可

 

 

2. 各种请求方式

import requests

Payloade={

‘’key1:1,

key2:2

}

 

requests.post(网址,date=paylode)

#默认存储到表单下

字符串存储到date内容下

 

  requests.put(网址)

  requests.delete(网址)

 

 

  R=requests.head(网址) 返回网页的头部信息

    R.headers

 

requests.patch(网址)

理解patchput的区别

假设url位置有一组数据UserInfo ,包括UserIDUserName20个字段

 

需求:用户修改了UserName,其他不变

1. 采用PATCH ,仅向url提交UserName的局部更新请求

2. 采用PUT, 必须将20个字段一起提交,未提交的字段被删除

Ps

1. 可见PATCH的最主要好处是节省网络宽带

2. HTTP 协议和Request库方法是一致并且一一对应的

 

 

 

请求

   基于GET请求

基本写法

 

import requests

response=requests.get(https://www.dbmeinv.com/) #获取网页的内容

print(response.text)  以文本格式保存

 

带参数的GET请求

import requests

response=requests.get(https://www.dbmeinv.com/?pager_offset=1') #获取网页的内容

print(response.text)  以文本格式保存

 

import requests

 

data={

name:lilei

age:18

}

response=requests.get(http://httpbin.org/get,params=data)

print(response.text)

 

 

解析json

 

import requests

response=requests.get(http://httpbin.org/get)

print(type(response.text))

print(response.json()) #等价于json.loads

print((response.json))

 

获取二进制数据(文件下载,音频

import requests

response=requests.get(http://github.com/favicon.ico)

print(type(response.text),type(response.content))

print(response.text) #文本形式

print(response.content)#二进制内容

 

 

 

import requests

response=requests.get(http://github.com/favicon.ico)

with open(favicon,wb) as f:

f.write(reponse.content)

f.close()

 

 

 

Requests库的get方法

r = requests.get(url)

函数内容:构造一个向服务器请求资源的Request 对象

返回的是一个包含服务器资源的Response对象(包含爬虫返回的全部内容)

爬取网页内容的通用代码框架

Requests支持6种链接库的异常

 

 

 

方法:response.raise_for_status()   ps:如果不是200,返回一个requests.HTTPError的异常

 

 

import requests

def getHTMLText(url):

try:

r = requests.get(url,timeout=30)

r.raise_for_status()#如果状态码不是200,引发HTTPError的异常

r.encoding = r.apparent_encoding

return r.text

except:

return 产生了异常

 

if __name__== __main__:

url = http://baidu.com

print(getHTMLText(url))

 

 

#requests.request()13个控制访问参数

requests.request(method,url,**kwargs)

"""

method:请求方式,对应get/put/post7

url:拟获取页面的url链接

**kwargs:控制访问参数,共13

**kwargs:控制访问的参数,均为可选项:

params:字典或字节序列,作为参数增加到url

 

 

例:kv={'key1':'value','key2':'value2'}

    r=requests.request('GET','http://python123.io/ws',params=kv)

    print(r.url)

http://python.io/ws?key1=value1&key2=value2

 

data:字典,字节序列或文件对象,作为Request的内容

 

json:JSON格式的数据,作为Request的内容

 

headers:字典,HTTP定制头(模拟浏览器进行访问)

 

cokies:字典或CpplieJar,Request中的cookie

 

auth:元祖,支持HTTP认证功能

 

files:字典类型,传输文件

 

timeout:设定超时时间,秒为单位

 

proxies:字典类型,设定访问代理服务器,可以增加登陆认证

 

allow_redirects:True//False,默认为True,重定向开关

 

stream:True/False,默认为True,获取内容立即下载开关

 

verify:True/False,默认为True,认证SSL证书开关

 

cert:本地SSL证书路径"""

 

 

posted on 2019-03-05 10:19  我是夜雨吖  阅读(329)  评论(0编辑  收藏  举报

导航