Python3爬虫(四)请求库的使用requests
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的更多相关文章
- Python3 网络爬虫(请求库的安装)
Python3 网络爬虫(请求库的安装) 爬虫可以简单分为几步:抓取页面,分析页面和存储数据 在页面爬取的过程中我们需要模拟浏览器向服务器发送请求,所以需要用到一些python库来实现HTTP的请求操 ...
- 爬虫、请求库requests
阅读目录 一 介绍 二 基于GET请求 三 基于POST请求 四 响应Response 五 高级用法 一 介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,req ...
- python3爬虫之Urllib库(一)
上一篇我简单说了说爬虫的原理,这一篇我们来讲讲python自带的请求库:urllib 在python2里边,用urllib库和urllib2库来实现请求的发送,但是在python3种在也不用那么麻烦了 ...
- python3爬虫初探(二)之requests
关于请求网页,不得不提requests这个库,这是爬虫经常用到的一个第三方库,用pip安装即可. requests用法很多,这里只写一些基础的,其他高级功能可参考官方文档. import reques ...
- python爬虫(四)_urllib2库的基本使用
本篇我们将开始学习如何进行网页抓取,更多内容请参考:python学习指南 urllib2库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很 ...
- 爬虫、请求库selenium
阅读目录 一 介绍 二 安装 三 基本使用 四 选择器 五 等待元素被加载 六 元素交互操作 七 其他 八 项目练习 一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决r ...
- (python3爬虫实战-第一篇)利用requests+正则抓取猫眼电影热映口碑榜
今天是个值得纪念了日子,我终于在博客园上发表自己的第一篇博文了.作为一名刚刚开始学习python网络爬虫的爱好者,后期本人会定期发布自己学习过程中的经验与心得,希望各位技术大佬批评指正.以下是我自己做 ...
- python3爬虫之Urllib库(二)
在上一篇文章中,我们大概讲了一下urllib库中最重要的两个请求方法:urlopen() 和 Request() 但是仅仅凭借那两个方法无法执行一些更高级的请求,如Cookies处理,代理设置等等 ...
- 6.python3爬虫之urllib库
# 导入urllib.request import urllib.request # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib.request.urlo ...
随机推荐
- python字符串反转 高阶函数 @property与sorted(八)
(1)字符串反转 1倒序输出 s = 'abcde' print(s[::-1]) #输出: 'edcba' 2 列表reverse()操作 s = 'abcde' lt = list(s) lt.r ...
- 1.6 WEB API NET CORE 使用Redis
一.Redis安装 https://www.cnblogs.com/cvol/p/9174078.html 二.新建.net core web api程序 选webapi 或者应用程序都可以 三.使用 ...
- js常用函数汇总(不定期更新)
1.图片按比例压缩 function setImgSize(){ var outbox_w=imgbox.width(), outbox_h=imgbox.height(); imgbox.find( ...
- em px 换算在线工具
网址: http://pxtoem.com/#help http://www.runoob.com/tags/ref-pxtoemconversion.html
- LeetCode: Recover Binary Search Tree [099]
[题目] Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without cha ...
- Codeforces Round #443 (Div. 2)
C. Short Program Petya learned a new programming language CALPAS. A program in this language always ...
- 【遥感专题系列】微波遥感(二、合成孔径雷达SAR基础)
目前使用最广的成像雷达系统就是合成孔径雷达(Synthetic Aperture Radar:SAR),SAR几乎成为了雷达的代名词.本文从应用角度介绍SAR系统的基本知识. 本文主要包括: SAR基 ...
- 使用Mosh,本地Mac locale与Remote Debian locale不一致的问题
事实上, 你并不需要安装语言包, 只需安装中文字体并将/etc/locale.gen 中zh_CN.UTF-8 前的注释符号去掉, 执行sudo locale-gen 然后重启即可.
- Unity3d在各个平台读取Sqlite3数据库
这也是我第一次在Unity3d中使用Sqlite来作为配置表文件,当然了,SQLite有优秀的读写性能. 如果这个项目用着稳定的话,我会一直使用下去. Android平台: 1,下载libsqlite ...
- AutoCAD笔记
1.等距离复制:使用菜单栏下“修改->阵列”功能或右侧快捷方式,可以轻松复制,以下是阵列设置界面 2.快捷键-图案填充和渐变色:H+空格 3.画图时时常会用到Ctrl+V,但难免会按成了Ctrl ...