HTTP请求的python实现-Requests库

2019-04-17  本文已影响0人  朱双伟_西潮坝上

Requests实现是比较人性化的,也是最常用的方式。操作更加简单,更加人性化。

Requests库是第三方模块,需要额外进行安装。可以取GitHub上下载源码,下载地址是:http://github.com/kennethreitz/requests/releases。将源码压缩包解压缩,然后进入解压缩后的文件夹,运行setup.py即可。验证安装是否成功的方法是在python中输入import requests,若不报错,即为安装成功。

1.首先实现一个完整的请求与响应模型。

GET请求

import requests

r=requests.get('http://www.baidu.com')

print(r.content) #输出字节信息

POST请求

import requests

postdata={'key':'value'}#(在某个登陆页面需要输入用户名,密码)

r=requests.post('http://www.xxxx.com/login',data=postdata)

print(r.content)

HTTP中其他请求也可以用Requests实现

r=requests.put('http://www.xxxx.com/put',data={'key':'value'})

r=requests.delete('http://www.xxxx.com/delete')

r=requests.get('http://www.xxxx.com/get')

r=requests.head('http://www.xxxx.com/get')

r=requests.options('http://www.xxxx.com/get')

2.响应与编码

直接获取网页编码并赋给r.encoding

chardet检测字符串/文件编码模块,chardet.detect()返回字典

import requests

r=requests.get('http://www.baidu.com')

r.encoding=chardet.detect(r.content)['encoding'] 

print r.text #这样输出的文本不会有乱码

3.请求头headers处理

在get函数中添加headers参数即可。

import requests

user_agent='Mozilla/4.0 (compatible; MSIE5.5; Windows NT)'

headers={'User-agent':user_agent}

r=requests.get('http://www.baidu.com',headers=headers)

print(r.content)

4.响应码code和响应头headers处理

获取响应码使用Requests中的status_code字段,获取响应头使用Requests中的headers字段.

import requests

r=requests.get('http://www.baidu.com')

if r.status_code == requests.codes.ok:

    print r.status_code #响应码

    print r.headers #响应头

    print r.headers.get('content-type') # 推荐

    print r.header['content-type'] #不推荐

当headers中没有响应字段时,第一种返回None;第二种会抛出异常。

5.Cookie处理

如果响应中包含Cookie的值,可以用如下方式获取Cookie字段的值

import requests

user_agent='Mozilla/4.0 (compatible; MSIE5.5; Windows NT)'

headers={'User-agent':user_agent}

cookies = dict(name='qiye', age='10')

r=requests.get('http://www.baidu.com',headers=headers,cookies=cookies)

print(r.text)

还有一种更加高级,且能自动处理Cookie的方式,有时候我们并不关心Cookie的值是多少,只是希望每次访问的时候自动把Cookie的值带上,向浏览器一样。Requests提供了一个session的概念,在连续访问网页,处理登陆跳转时特别方便,不需要关注具体细节。

import Requests

loginUrl = 'http://www.xxxx.com/login'

s=requests.Session()

#首先访问登陆界面,作为游客,服务器会先分配一个cookie

r=s.get(loginUrl, allow_redirects=True)

datas = {'name':'qiye','passwd':'qiye'}

#向登陆链接发送post请求,验证成功,游客权限转为会员权限

r=s.post(loginUrl,data=datas, allow_redirects=True)

print r.text

这种使用Session函数处理Cookie的方法今后会很常用。

6.重定向与历史信息

处理重定向只是需要设置一下allow_redirects字段即可,设置为True, 即允许重定向;设置为False,则是禁止重定向。如果运行重定向可以通过r.history字段查看历史信息,即访问成功之前的所有请求跳转信息。

7.超时处理

超时选项时通过timeout来进行设置的

requests.get('http://github.com',timeout=2)

8. 代理设置

import Requests

proxies = { 

"http": "http://0.10.1.10:3128"

"http": "http://10.10.1.10:1080"

}

requests.get('http://example.org',proxies=proxies)


请求得到URL文本后如何对网页进行解析,则是python爬虫开发中非常关键的一步。HTML中网页解析提取方式有多种,分别为Firebug工具,正则表达式和Beautiful soup。本文主要介绍Beautiful soup。欲知解析大法,且看下回分解。

上一篇下一篇

猜你喜欢

热点阅读