这篇文章主要介绍了python request 模块详细介绍,帮助大家利用request 模块学习爬虫,感兴趣的朋友可以了解下
Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。
pip install request
1、无参数实例,
import requests
url = "https://github.com/timeline.json"
ret = requests.get(url)
print ret.url
# 获得页面源代码,并打印出来
print ret.text
ret.close()
2、有参数实例
import requests
url = "http://httpbin.org/get"
payload = {'key1': 'value1', 'key2': 'value2'}
ret = requests.get(url, params=payload)
print ret.url
# 获得页面源代码,并打印出来
print ret.text
ret.close()
1、基本POST实例
import requests
url = "http://httpbin.org/post"
payload = {'key1': 'value1', 'key2': 'value2'}
ret = requests.post(url, data=payload)
# 获得页面源代码,并打印出来
print ret.text
ret.close()
2、发送请求头和数据实例
import requests
import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
headers = {'content-type': 'application/json'}
ret = requests.post(url, data=json.dumps(payload), headers=headers)
# 获得页面源代码,并打印出来
print ret.text
print ret.cookies
ret.close()
session是会话,能在会话期间保持一些属性的不被改变。例如当登录网站时,网站服务器会保存cookie,但两次GET或POST之间的cookie并不会共享,此时先创建session,在session里面发起多次GET或POST请求时,能保存cookie等必要的信息。
import requests
url='https://www.xslou.com/login.php'
data={'username':'186xxxx5736', 'password':'xxxxxx', 'action':'login'}
# 使用session发送请求
session = requests.session()
resp=session.post(url,data=data) # 使用session发送post请求
resp.encoding='gb2312'
# ..登录成功 ....
print( resp.text)
# 推荐小说
hot_url='https://www.xslou.com/modules/article/uservote.php?id=71960'
# 如果不是在session中发起get请求,则需要上面的post返回的cookic信息,写法如下
# request.get(hot_url,cookic=cookic)
resp2=session.get(hot_url)
resp2.encoding='gb2312'
# ..处理成功 ....
print(resp2.text)
请求头是包含浏览器和操作系统的一些信息,一些网站会用这个判断是自动程序发出的请求还是浏览器,也是避免反爬的手段之一。在网页下按F12,刷新页面,找到headers下面的User-Agent即可查看。
import requests
url = "https://github.com/timeline.json"
# 当网页反馈是自动程序发出,而不返回数据的时候,加上headers头部信息
# 建议一般每次都添加头部信息
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0'}
ret = requests.get(url, headers=headers)
print ret.url
# 获得页面源代码,并打印出来
print ret.text
ret.close()
模块的详细使用
import requests
requests.post(
url='xxxxxx',
files={
# 'f1':open('s1.py','rb')
# 可以上传元祖的形式上传,sssss1.py为后台获取的名称
'f1': open('sssss1.py',('s1.py', 'rb'))
}
)
其他不常用请求
# 提交put请求
requests.put(url, data=None, **kwargs)
# 获取HTML的头部信息
requests.head(url, **kwargs)
# 提交删除请求
requests.delete(url, **kwargs)
# 提交局部修改请求
requests.patch(url, data=None, **kwargs)