当前位置:
首页 > Python基础教程 >
-
爬虫篇 | 认识Python最最最常用语重要的库Requests
来源:Python绿色通道
ID:Python_channel
作者:龙哥带你飞
Requests库是Python爬虫中最最最最最最重要与常见的库,一定要熟练掌握它.
下面我们来认识这个库
Requests
requests
是Python最为常用的http
请求库,也是极其简单的.使用的时候,首先需要对requests
进行安装,直接使用Pycharm进行一键安装。
1.响应与编码
import requests
url = 'http://www.baidu.com'
r = requests.get(url)
print type(r)
print r.status_code
print r.encoding
#print r.content
print r.cookies
得到:
<class 'requests.models.Response'>
200
ISO-8859-1
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
2.Get请求方式
values = {'user':'aaa','id':'123'}
url = 'http://www.baidu.com'
r = requests.get(url,values)
print r.url
得到:http://www.baidu.com/?user=aaa&id=123
3.Post请求方式
values = {'user':'aaa','id':'123'}
url = 'http://www.baidu.com'
r = requests.post(url,values)
print r.url
#print r.text
得到:
http://www.baidu.com/
4.请求头headers处理
user_agent = {'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400'}
header = {'User-Agent':user_agent}
url = 'http://www.baidu.com/'
r = requests.get(url,headers=header)
print r.content
注意处理请求的headers
很多时候我们服务器会检验请求是否来自于浏览器,所以我们需要在请求的头部伪装成浏览器来请求服务器.一般做请求的时候,最好都要伪装成浏览器,防止出现拒绝访问等错误,这也是一种反爬虫的一种策略
特别说明,以后无论我们做什么请求,一定要带上headers,千万不要偷懒省事,把这里当成一条交通规则来理解,闯红灯不一定会发生危险但不安全,为了省事,我们遵循红灯停绿灯行就够了,做网络爬虫请求也一样,必须把这个headers加上,以防出错.
user_agent = {'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400'}
header = {'User-Agent':user_agent}
url = 'http://www.qq.com/'
request = urllib2.Request(url,headers=header)
response = urllib2.urlopen(request)
print response.read().decode('gbk')#这里注意一下需要对读取的网页内容进行转码,先要查看一下网页的chatset是什么格式.
在浏览器上打开www.qq.com
然后按F12,查看User-Agent
:
User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
application/xml :在 XML RPC,如 RESTful/SOAP 调用时使用
application/json :在 JSON RPC 调用时使用
application/x-www-form-urlencoded :浏览器提交 Web 表单时使用
在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务
5.响应码code与响应头headers处理
url = 'http://www.baidu.com'
r = requests.get(url)
if r.status_code == requests.codes.ok:
print r.status_code
print r.headers
print r.headers.get('content-type')#推荐用这种get方式获取头部字段
else:
r.raise_for_status()
得到:
200
{'Content-Encoding': 'gzip', 'Transfer-Encoding': 'chunked', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Server': 'bfe/1.0.8.18', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:57 GMT', 'Connection': 'Keep-Alive', 'Pragma': 'no-cache', 'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Date': 'Wed, 17 Jan 2018 07:21:21 GMT', 'Content-Type': 'text/html'}
text/html
6.cookie处理
url = 'https://www.zhihu.com/'
r = requests.get(url)
print r.cookies
print r.cookies.keys()
得到:
<RequestsCookieJar[<Cookie aliyungf_tc=AQAAACYMglZy2QsAEnaG2yYR0vrtlxfz for www.zhihu.com/>]>
['aliyungf_tc']
7重定向与历史消息
处理重定向只是需要设置一下allow_redirects
字段即可,将allow_redirectsy
设置为True
则是允许重定向的,设置为False
则禁止重定向的
r = requests.get(url,allow_redirects = True)
print r.url
print r.status_code
print r.history
得到:
http://www.baidu.com/
200
[]
8.超时设置
超时选项是通过参数timeout
来设置的
python url = 'http://www.baidu.com' r = requests.get(url,timeout = 2)
9.代理设置
proxis = {
'http':'http://www.baidu.com',
'http':'http://www.qq.com',
'http':'http://www.sohu.com',
}
url = 'http://www.baidu.com'
r = requests.get(url,proxies = proxis)
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式