Infi-chu:

http://www.cnblogs.com/Infi-chu/

一、基本用法:

1. 安装:

pip install requests

2. 例子:

import requests
url = 'http://www.baidu.com'
r = requests.get(url)
print(type(r)) # 类型是str(JSON格式)
print(r.status_code)
print(r.text)
print(r.cookies)

【注】其余请求方法也是一样的

r = requests.post(url)
r = requests.put(url)
r = requests.delete(url)
r = requests.head(url)
r = requests.options(url)

3. GET请求:

  • 例子
import requests
url = 'http://www.baidu.com'
r = requests.get(url)
print(r.text)

 若想在url中添加参数有两种方式:

  a. 直接添加

r = requests.get(url+参数)

  b. 通过params参数添加

import requests
data = {"name":"Infi-chu","age":"23"}
r = requests.get(url,params=data)

网页的返回类型是str类型,是JSON格式的,我们可以直接调用 json()方法

若返回结果不是JSON格式,便会出现解析错误,抛出 json.decode.JSONDecodeError异常

  • 抓取网页

可使用正则表达式和headers。

  • 抓取二进制数据

图片、音频、视频等文件本质上都是二进制码组成的。

抓取GitHub图标:

import requests
r = requests.get("http://github.com/favicon.ico")
print(r.text)
print(r.content)
# 保存图片
with open('favicon.ico','wb') as f:
f.write(r.content)
  • 添加headers

在爬取知乎时必须在User-Agent中加入信息,否则不能爬取,会被拦截

4. POST请求

improt requests
data = {'name':'Infi-chu','age'='23'}
r = requests.post('http://www.baidu.com',data=data)

 成功后会在form中看到所提交的数据(F12查看)

5. 响应

发送数据后,得到的就是响应,我们使用text和content获取了内容,下面是另外的信息:

import requests
r = requests.get('http://www.baidu.com')
print(type(r.status_code),r.status_code)
print(type(r.headers),r.headers)
print(type(r.cookies),r.cookies)
print(type(r.history),r.history)
print(type(r.url),r.url)

 headers 属性返回 CaseInsensitiveDict 类型

 cookies 属性返回 RequestsCookieJar 类型

二、高级用法:

1.文件上传

import requests
f = {'file':open('favicon.ico','rb')}
r = requests.post(url,files=f)
print(r.text)

2.Cookies

import requests
r = requests.get(url)
print(r.cookies)
for k,v in r.cookies.items():
print(k+"="+v)

3.会话维持

使用Session对象

import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
r = s.get('http://httpbin.org/cookies')
print(r.text)

4.SSL证书验证

requests提供了证书验证的功能,使用verify参数控制是否检查此证书,默认是True,会自动验证

5.代理设置

对于某些网站,在测试的时候请求几次,能正常获取信息,但是一旦大规模爬取,可能会出现验证码或直接封掉IP,导致一段时间内无法访问

代理设置:

import requests
proxy = {'http':'http://ip:port','https':'https://ip:port'}
requests.get('https://www.taobao.com',proxies=proxy)

6.超时设置

import requests
r = requests.get('https://www.taobao.com',timeout=1)
print(r.status_code)

  

7.身份认证

import requests
from requests.auth import HTTPBasicAuth
r = requests.get(url,auth=HTTPBasicAuth('username','password'))
print(r.status_code) # 可简写为
r = requests.get(url,auth=('username','password'))
print(r.status_code)
# 也提供了OAuth认证,使用 pip3 install requests_oauthlib

8.Prepared Request

将请求表示为数据结构,这个数据结构叫Prepared Request

Python3爬虫(四)请求库的使用requests的更多相关文章

  1. Python3 网络爬虫(请求库的安装)

    Python3 网络爬虫(请求库的安装) 爬虫可以简单分为几步:抓取页面,分析页面和存储数据 在页面爬取的过程中我们需要模拟浏览器向服务器发送请求,所以需要用到一些python库来实现HTTP的请求操 ...

  2. 爬虫、请求库requests

    阅读目录 一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍   #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,req ...

  3. python3爬虫之Urllib库(一)

    上一篇我简单说了说爬虫的原理,这一篇我们来讲讲python自带的请求库:urllib 在python2里边,用urllib库和urllib2库来实现请求的发送,但是在python3种在也不用那么麻烦了 ...

  4. python3爬虫初探(二)之requests

    关于请求网页,不得不提requests这个库,这是爬虫经常用到的一个第三方库,用pip安装即可. requests用法很多,这里只写一些基础的,其他高级功能可参考官方文档. import reques ...

  5. python爬虫(四)_urllib2库的基本使用

    本篇我们将开始学习如何进行网页抓取,更多内容请参考:python学习指南 urllib2库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很 ...

  6. 爬虫、请求库selenium

    阅读目录 一 介绍 二 安装 三 基本使用 四 选择器 五 等待元素被加载 六 元素交互操作 七 其他 八 项目练习 一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决r ...

  7. (python3爬虫实战-第一篇)利用requests+正则抓取猫眼电影热映口碑榜

    今天是个值得纪念了日子,我终于在博客园上发表自己的第一篇博文了.作为一名刚刚开始学习python网络爬虫的爱好者,后期本人会定期发布自己学习过程中的经验与心得,希望各位技术大佬批评指正.以下是我自己做 ...

  8. python3爬虫之Urllib库(二)

    在上一篇文章中,我们大概讲了一下urllib库中最重要的两个请求方法:urlopen()  和  Request() 但是仅仅凭借那两个方法无法执行一些更高级的请求,如Cookies处理,代理设置等等 ...

  9. 6.python3爬虫之urllib库

    # 导入urllib.request import urllib.request # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib.request.urlo ...

随机推荐

  1. Extjs 自动列宽

    //auto column width Ext.grid.Panel.prototype.viewConfig = { listeners: { refresh: function (dataview ...

  2. Python 列表(list)操作

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  3. centos6.5升级python2.7

    请看我的有道云笔记链接: http://note.youdao.com/noteshare?id=777179c98876147537288489e963b7db&sub=71D56E2269 ...

  4. Sublime Text 3的安装,卸载,更新,激活

    安装: 下载安装包:建议到官方网站下载,网址:http://www.sublimetext.com/3 . 卸载 在Finder中进入“/Users/用户名/Library/Application S ...

  5. GetClassLoader和GetCallerClass的使用

    GetClassLoader是JAVA中用来得到ClassLoader的 JAVA中有以下几种ClassLoader. 1.  Bootstrap ClassLoader - GetClassLoad ...

  6. java反射 反射构造函数 报 wrong number of arguments 错误

    package com; import java.lang.reflect.Constructor; public class Person { public Person() { } public ...

  7. 【luogu P1816 忠诚】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1816 用st表来解决rmq问题. 表示同时培训学的st表,然后我就忘得差不多了,在这里推荐一篇blog 大佬 ...

  8. while、dowhile、switchcase 循环嵌套、穷举、迭代

    for(var i=0;i<5;i++)//假如规定到5 { document.write("123456<br/>") } 如果变成这样 var i=0: fo ...

  9. Node.js 笔记03

    一.buffer(缓存区) Node里面的buffer,是一个二进制数据容器,数据结构类似与数组,专门用于Node中数据的存放 ​ 1. buffer的基本使用 历史上的使用方式:const buf1 ...

  10. 开始重学java【门头沟2017年12月6日】

    现在从struts2开始重新学习java, 想找个人一起学习java/php都可以. 学习时间大概是两个月,就是年前这段时间. 下一个阶段就是做项目进行练习.(时间为:一个月时间) 不管是学习java ...