requests

requests属于第三方库,也是python默认不会自带的库,需要手动安装

pip安装:pip3 install requests

 

实例引入:

requests中可以使用get请求页面

 

requests其他的请求类型仍然可以使用一句话来完成

r = requests. post(' http://httpbin.org/post )

r = requests.put (’ http //httpbi i. org/put )

r = requests .delete( ' http://httpbin.org/delete ' )

r = requests .head (’ http://httpbin .org/get ’)

r = requests.options(’ http://httpbin.org/get')

 

get请求中如果想要添加额外的信息,可以使用如下方式:r = requests .get('http://httpbin.org/get?name=germey&age=22')

但是这种方式不太好,一般情况下,这种信息数据会用字典来存储

import requests

data = {

  ’ name': 'germey ’,

  'age ’: 22

}

r = requests.get ("ttp://httpbin.org/get "params=data)

print(r.text)

 

通过运行可以得到,网页的返回类型是str类型,但是他比较特殊,是json格式,想要直接解析返回结果,得到一个字典格式的话,可以直接调用json()方法,如下:

import requests

r = requests.get(” http://httpbin.org/get”)

print(type(r.text))

print(r.json())

print ( type(r. j son()))

使用json之后,返回结果是json格式的字符串转为字典,如果不是json格式,便会出现解析错误

 

·抓取网页

上面的请求链接返回的是 JSON 形式的字符串, 那么如果请求普通的网页,则肯定能获得相应的

内容了 下面以“知乎”→“发现”页面为例来看一下

import requests

import re

headers = {

    'User-Agent :’问 zilla/5 .0 (Macintosh; Intel Mac 05 X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko)

Chrome/52 .0.2743. 116 Safari/537.36

}

r =·requests .get(”https://www . zhihu .com/explore", headers=headers)

pattern = re compil exp ore-feed. que stio n_link. 〉(.的 )< la> ', re .5)

titles = re. indall(pattern r .text)

print(titles)

这里我们加入了 headers 信息,其中包含了 User- Agent 字段信息, 也就是浏览器标识信息 如果 不加这个 ,知乎会禁止抓取

 

如果想要爬取图片保存到本地,可以使用r.content,或得到的内容是bytes类型

import requests

r = requests get (” https://github.com/favicon.ic。”)

with open(’ favicon . ico' , 'wb ’) as f:

    f.write(r.content)

这里用了 open()方法,它的第一个参数是文件名称,第二个参数代表以二进制写的形式打开,可 以向文件里写入二进制数据

 

requests中的post请求

import requests

data ={’ name ':’germey ’, age ':’ 22 ’}

r = requests.post("http://httpbin .org/post”, data=data)

print (r.text)

print(r.headers)

print(r.url)

print(r.history)

还可以通过响应获取状态码,响应头,Cookies,请求历史等,,除此之外,requests还提供了一个内置的状态吗查询对象requests.codes 

 

import requests

r = requests.get(’ http://www.jianshu.com)

exit() if not r. status code == requests. codes . ok else pri川(’ Reque st Success ully ’)

这里通过比较返回码和内置的成功的返回码,来保证请求得到了正常响应,输出成功请求的消息,

否则程序终止,这里我们用 requests.codes .ok 得到的是成功的状态码 200

 

文件上传

我们知道 req ests 可以 拟提交一些数据 假如有的网站需要上传文件,我们也可以用它来实现, 非常简单,示例如下

import requests

files = {'file ' : open (’favicon.ico ’,'rb ’)}   //这里的favicon是文件名,需要和当前脚本在同一目录下

r = requests . post(” http ://httpbin .org/post”, files=files)

print(r.text)

 

获取cookie

import requests

response = requests.get("https://www.baidu.com")

print(response.cookies)   #字典的形式

for key,value in response.cookies.items():

  print(key + '=' + value)

 

会话维持

上边一个是使用一个浏览器设置cookie,使用另一个浏览器访问,两者没有关联,所以结果为空

可以通过声明session对象,然后发起请求

 

SSL证书验证

requests 还提供了证书验证的功能 当发送 HTTP 请求的时候,它会检查 SSL 证书,我们 可以使用 veri 参数控制是否检查此证书 其实如果不加 verify 参数的话,默认是 True ,会自动验证。如果想要请求成功,设置verify为False

import requests

response = requests.get(’ https: I /www .12306. en ’, verify=False)

print(response.status_code)

 

通过上边的方式,虽然可以得到请求码200,但是会得到一个警告,需要我们指定证书,我们可以通过设置忽略警告的方式来屏蔽这个警告。

import requests

from requests.packages import urllib3

urllib3.disable_warnings()  #消除警告信息

response = requests.get("https://www.12306.cn",verify=False)

print(response.status_code)

 

代理设置

 

超时设置

 

认证设置

 

异常处理

或者通过捕获警告到日志的方式忽略警告:

import logging

import requests

logging.captureWarnings(True)

response = requests.get("https://www.12306.cn",verify=False)

print(response.status_code)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值