注册
登录
提问时间:2018/9/25 16:34:14    楼主:未知网友   阅读量:245

一、requests的基本用法

1、使用requests发起一个get请求,得到的response本身是一个对象,拥有很多的属性;

response=requests.get(‘https://www.XXXXX.com’)

2、如果源码的中文显示异常,可以使用以下方法进行重新编码一般都是utf8或者是gb18030;

response.encoding=‘utf8’

3、打印此次的源码的字符串格式或者是二进制格式(text、content);

print(response.content)

4、打印此次请求的地址;

print(response.url)

5、打印此次请求的响应头;

print(response.headers)

6、打印此次请求的cookie信息;

print(response.cookies)

7、打印此次请求的状态码;

print(response.status_code)

二、使用requests构造一个携带参数的get请求。

1、设置参数字典;

params={

‘username’:‘123’,

‘password’:‘456’

}

2、使用resquests发送请求如果不设置请求头,则默认的请求头是python-requests/requests版本号;

from fake_useragent import UserAgent

3、设置随机请求头;

headers={‘User-Agent’:UserAgent().random}

4、设置代理IP;

proxy={“https”:“https://113.217.130.131:58962”}

5、开始访问;

response=requests.get(‘http://httpbin.org/get’,params=params,headers=headers,proxies=proxy)

print(response.text)

6、如果访问一个网址得到的是json字符串,则可以直接调用requests里面的json()函数,直接将返回的结果转换成字典,不需要导入json模块然后在使用json.load()函数来进行反序列化了;

print(response.json())

三、使用requests构造一个携带参数的post请求。

1、设置参数字典;

data={

‘name’:‘123’,

‘age’:‘456’

}

2、设置随机请求头;

headers={‘User-Agent’:UserAgent().random}

3、设置代理IP;

proxy={“https”:“https://123.207.30.131:80”}

4、进行访问,可以看到post请求携带的参数是放在form表单里的;

response=requests.post(‘http://httpbin.org/post’,data=data,headers=headers,proxies=proxy)

print(response.text)

四、requests模块cookie的自动追踪与管理。

1、在requests这个模块中,如果直接访问网页,那么每一次的访问之间是没有任何关系的,相当于两个不同的会话,而如果要维持同一个会话,也就是相当于使用同一个浏览器打开不同的页面,而不是每次都要重新设置cookie,这时便有了session对象(注意,此session对象和服务器的session是不同的概念);

2、创建一个session对象;

session=requests.Session()

res1=session.get(‘https://www.XXXXX.com’)

res2=session.get(‘https://www.XXXXX.com’)

3、那么以上的两次访问就是同一个会话,服务器会认为你们是同一个人;

4、有的时候为了节省时间,可以将cookie直接粘贴到headers中,或者也可以直接将cookie保存到本地。

第一步,导入一个包里面的方法;

import http.cookiejar

第二步,给创建好的session对象设置一个cookie属性,并且把MozillaCookieJar对象赋值给这个属性;

这个属性的作用主要是将你第一次登陆时候获得的set-cookie绑定到MozillaCookieJar对象上面,并且设置好如果要保存的话,应该保存到那个文件中;

session.cookies=http.cookiejar.MozillaCookieJar(‘123.txt’)

第三步,将登陆完成之后获取的set-cookie保存到本地;

session.cookies.save(ignore_expires=True,ignore_discard=True)

第四步,下次访问其他页面的时候,先进行读取,然后在访问其他页面;

session.cookies.load(‘123.txt’,ignore_discard=True,ignore_expires=True)

这样的话,就可以将cookie通过一个属性,以另类的方式,和session进行绑定。