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 ...
随机推荐
- 站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
这周Jerry在SAP上海研究院参加了一个为期4天的Kubernetes培训,度过了忙碌而又充实的4天.Jason,Benny和Peng三位大神的培训干货满满,借此机会,Jerry和过去的两位老领导P ...
- IOS CoreLocation框架的使用(用于地理定位)
● 在移动互联网时代,移动app能解决用户的很多生活琐事,比如 ● 导航:去任意陌生的地方 ● 周边:找餐馆.找酒店.找银行.找电影院 ● 在上述应用中,都用到了地图和定位功能,在iOS开发中 ...
- POJ-3484 Showstopper---二分+前缀和
题目链接: https://cn.vjudge.net/problem/POJ-3484 题目大意: 给出一系列等差数列,给出第一项和最后一项和公差 这些等差数列中每个数出现的次数只有一个是奇数,找出 ...
- BZOJ3437:小P的牧场(斜率优化DP)
Description 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号),于是他就烦恼了:为了控制这n个牧场,他需要在某些牧场上面建立控制站,每个牧场上只能建立一个控制站,每个控制 ...
- CF498D Traffic Jams in the Land
嘟嘟嘟 题面:有n条公路一次连接着n + 1个城市,每一条公路有一个堵塞时刻a[i],如果当前时间能被a[i]整除,那么通过这条公路需要2分钟:否则需要1分钟. 现给出n条公路的a[i],以及m次操作 ...
- Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot 【二分 + 尺取】
任意门:http://codeforces.com/contest/1073/problem/C C. Vasya and Robot time limit per test 1 second mem ...
- HDU 1426 Sudoku Killer(dfs 解数独)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1426 Sudoku Killer Time Limit: 2000/1000 MS (Java/Oth ...
- Xcode DeviceSupport
问题:Could not locate device support files. This iPhone 6s is running iOS 12.1 (16B5059d), which may n ...
- js操作json方法总结
相对于前端的老铁来说JSon并不陌生,JSON JavaScript Object Notation 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是一种理想的数据交换格式. json可以 ...
- Java 依赖、关联、聚合和组合
必须转一个,写的太好了! https://blog.csdn.net/zhengzhb/article/details/7190158