python3好用的requests库


requests是什么?

requests是基于urllib编写的http库,支持python3,比urllib更好用,更简单。之前使用python写一些http请求或者爬虫的脚本使用的是urllib来获取html,后来发现用requests方便很多。

安装方法

1、使用pip进行安装

pip install requests

2、下载代码安装

在github上(https://github.com/kennethreitz/requests) 直接下载源代码(或者clone到本地,需要安装git),然后再目录下执行

python setup.py install

3、通过IDE工具去安装,许多IDE工具提供安装方法,例如pycharm之类的

使用方法

首先,查看一下帮助文件,里面有最基本的说明

import requests
help(requests)

帮助文档里给出了发送get和post请求的最简单实例:

 Requests is an HTTP library, written in Python, for human beings. Basic GET
usage: >>> import requests
>>> r = requests.get('https://www.python.org')
>>> r.status_code
200
>>> 'Python is a programming language' in r.content
True ... or POST: >>> payload = dict(key1='value1', key2='value2')
>>> r = requests.post('http://httpbin.org/post', data=payload)
>>> print(r.text)
{
...
"form": {
"key2": "value2",
"key1": "value1"
},
...
}

写一个简单请求的例子:

import requests

#post
url = 'xxx'
FromData = {key1:value,key2:value}
RequestHeaders = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding":"utf-8",
"Accept-Language":"zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",
"Connection":"keep-alive",
"Host":"xxx",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0"}
test = requests.post(url , data = FromData , headers = RequestHeaders) #get
url = 'xxx'
#FromData = {key1:value,key2:value}
RequestHeaders = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding":"utf-8",
"Accept-Language":"zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",
"Connection":"keep-alive",
"Host":"xxx",
"Referer":"xxx",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0",
"cookie":"sid=xxx"}
test = requests.get(url , headers = RequestHeaders, params={xx})

发送请求后会返回一个requests的类

type(test)
>>><class 'requests.models.Response'>
dir(test)
>>>['__attrs__', '__bool__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_content', '_content_consumed', 'apparent_encoding', 'close', 'connection', 'content', 'cookies', 'elapsed', 'encoding', 'headers', 'history', 'is_permanent_redirect', 'is_redirect', 'iter_content', 'iter_lines', 'json', 'links', 'ok', 'raise_for_status', 'raw', 'reason', 'request', 'status_code', 'text', 'url']

可以选择相应的方法,对其进行处理

ps:配合beautifulsoup效果更佳

使用requests进行下载文件

a = requests.get(r'http://192.168.1.245:8080/static/stage/headImg/test.jpg',stream=True)    #stream = True,进行请求后不回立即下载文件,这样避免文件过大,内存不足,后面设置chunk_size来将文件分块下载
with open('C:\\test.jpg','wb')as f:
for i in a.iter_content(chunk_size=512): #iter_content:一块一块的遍历要下载的内容;iter_lines:一行一行的遍历要下载的内容
if i:
f.write(i)

最新文章

  1. android AES 加密
  2. Android开发之---Activity生命周期
  3. (TODO:)下载图片,报错:warning: could not load any Objective-C class information from the dyld shared cache. This will significantly reduce the quality of type information available.
  4. Python中如何读取xml的数据
  5. Valgrind的多线程调试工具
  6. java使用jacob将office转pdf
  7. 如何从Win7中提取制作Windows PE3.0
  8. Codevs 1507 酒厂选址
  9. Oracle SQL Lesson (2) - 限制和排序数据
  10. 解决 - java.lang.OutOfMemoryError: unable to create new native thread
  11. 学习Python编程的11个精品资源
  12. 很好的复习资料: SQL语句到底怎么写 ?
  13. 6.JAVA-链表实例
  14. ADB和Fastboot最新版的谷歌官方下载链接
  15. 多项目管理中PMO的作用
  16. 利用OCR识别扫描的jpg、tif文件的文字
  17. 【Jmeter】插件
  18. code signing is required for product type &#39;Application&#39; in SDK &#39;iOS 8.1&#39; 错误分析以及解决方案
  19. 关于子元素的margin-top对父级容器无效
  20. 学习Spring Boot:(十三)配置 Shiro 权限认证

热门文章

  1. 记录一下学习Android的小知识
  2. Deep Learning 学习笔记(8):自编码器( Autoencoders )
  3. JS||JQUERY常用语法
  4. Python绘图matplotlib
  5. 6410在rvds下编译启动代码报错分析
  6. 一个页面中内嵌页面 iframe元素
  7. Oracle-11g 中当执行 DBMS_STATS 时,因数据泵外部表文件缺失 Alert Log 告警 &quot;ORA-20011、ORA-29913&quot; 以及 &quot;KUP-XXXXX&quot;错误
  8. 算法描述》关于LIS的nlogn方法
  9. 566. Reshape the Matrix矩阵重排
  10. 基于 EntityFramework 的数据库主从读写分离架构 - 目录