【3】数据筛选2 - requests
目录
1.概述
2.下载安装
3.入门程序
4.请求对象:请求方式
5.请求对象:GET参数传递
6.请求对象:POST参数传递
7.请求对象:定制请求头
8.请求对象:cookie
9.响应对象
#1.概述
- requests 号称是唯一的一个非转基因的 python http 库,人类可以安全享用
遵循 PEP20 的核心规范
⚫ Beautiful is better than ugly[美丽优于丑陋]
⚫ Explicit is better than implicit[直白优于含蓄]
⚫ Simple is better than complex[简单优于复杂]
⚫ Complex is better than comlicated[复杂由于繁琐]
⚫ Readability counts[可读性]
在线库: https://pypi.org/project/requests/
官方文档: http://www.python-requests.org/en/master/
官方中文文档: http://docs.python-requests.org/zh_CN/latest/index.html
#2.下载安装
- (1) 命令安装方式
windows:打开命令行窗口,直接运行包管理命令安装
pip install requests
or
essy_install requsets
unix/linux:打开 shell 窗口,运行包管理命令安装
pip install requests
- (2) 离线包安装
下载离线安装包 requests-2.20.0-py2.py3-none-any.whl(见附件),执行命令安装
pip install requests-2.20.0-py2.py3-none-any.whl
#3.入门程序
```
# 引入依赖包
import requests
# 发送请求获取服务器数据
response = requests.get("http://www.sina.com.cn")
# 得到数据
print(response.text)
```
- request.get: 用于发送一个 get 请求给服务器,可以得到服务器的响应数据
- response.text: 从响应对象中获取文本数据
#4.请求对象: 请求方式
- HTTP1.1 规范中定义了 8 中请求操作方式: GET|POST|PUT|DELETE|OPTION|CONNECT|HEAD|PATCH
- 时下 WEB 项目比较流行的 RESTFul 请求方式有四种: GET|POST|PUT|DELETE
常规 WEB 项目最常用的请求方式有两种: GET|POST
⚫ requests.request(method, url, **kwargs):
◼ 底层发送请求的操作方式
⚫ requests.get(url, params=None, **kwargs):
◼ 发送 GET 请求
⚫ requests.post(url, data=None, json=None, **kwargs):
◼ 发送 POST 请求
⚫ requests.put(url, data=None, **kwargs):
◼ 发送 PUT 请求
⚫ requests.delete(url, **kwargs):
◼ 发送 DELETE 请求
⚫ requests.patch(url, data=None, **kwargs):
◼ 发送 PATCH 请求
⚫ requests.options(url, **kwargs):
◼ 发送 OPTIONS 请求
⚫ requests.head(url, **kwargs):
◼ 发送 HEAD 请求
source code: requests.api.py
#5.请求对象: GET 参数传递
- requests.get(url, params=None, **kwargs):
发送 GET 请求
@param url: get 请求服务器的地址
@param params: get 请求中附带的参数
@param kwargs: 其他附带参数,详情参照 requests.request()源代码
```
import requests
target_url = 'http://www.baidu.com/s'
data = {'wd': '魔道祖师'}
response = requests.get(target_url, params=data)
print(response.text)
```
- get 请求方式要传递的参数是字典形式的数据,直接赋值给 params 参数即可
#6.请求对象: POST 参数传递
- requests.post(url, data=None, json=None, **kwargs):
发送 POST 请求
@param url: post 请求服务器的 url 地址
@param data: post 请求中包含的常规参数数据
@param json: post 请求中包含的 like dict 数据/json 参数数据
```
# 引入依赖的模块
import requests
# 定义目标 url 地址
# url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
# 传递 post 中包含的参数
data = {
"i":"hello","from":"AUTO","to":"AUTO","smartresult":"dict","client":"fanyideskweb",
"salt":"1541660576025","sign":"4425d0e75778b94cf440841d47cc64fb",
"doctype":"json","version":"2.1","keyfrom":"fanyi.web",
"action":"FY_BY_REALTIME","typoResult":"false",
}
# 发送请求获取服务器返回的响应数据
response = requests.post(url, data=data)
print(response.text)
```
#7.请求对象:定制请求头
- requests 模块中的请求,底层都是通过 requsets.request(url, **kwargs)进行处理的,可以将请求头中的数据包含在字典中,传递给发送请求的 headers 参数进行操作
```
# 引入依赖的模块
import requests
from fake_useragent import UserAgent
ua = UserAgent()
# 定义请求地址和请求头数据
url = 'http://www.baidu.com/s'
headers = {'User-agent': ua.random}
param = {'wd': 'PYTHON 爬虫'}
# 发送请求获取响应数据
response = requests.get(url, headers=headers)
print(response.text)
```
##8.请求对象: cookie
- WEB 开发中 cookie 经常被用于基于客户端的状态保持操作,所以在常规爬虫处理过程中,cookie 的操作是最重要的操作之一。
- 可以直接通过定义一个字典数据传递给 requests 请求模块的 cookies 参数,添加请求中的 cookie 数据
- requests 中提供的 requests.cookies.RequestCookieJar()也可以在请求中添加处理 cookie 数据的操作并且更加适合跨域场景
```import requests
from requests.cookies import RequestsCookieJar
url = 'http://httpbin.org/cookies'
# 1. 第一种直接定义方式
# cookie_data = {'name': 'jerry'}
# 2. 对象操作方式
cookie_data = RequestsCookieJar()
cookie_data.set('name', 'tom')
response = requests.get(url, cookies=cookie_data)
response.encoding = 'utf-8'
print(response.text)
```
##9.响应对象
- 爬虫从网络上采集数据,采集到的数据主要区分为如下几种类型:文本数据、二进制数据
requests 模块在响应对象中,针对返回的数据进行了不同的封装处理
⚫ response.encoding: 设置响应数据的编码,可以直接赋值
response.encoding = ‘utf-8’
⚫ response.text: 获取响应对象中包含的文本数据
⚫ response.content: 获取响应对象中包含的二进制数据
⚫ response.json(): 获取响应对象中的 JSON 数据,数据必须正确解析,负责 raise ValueError
⚫ response.raw: 特殊情况下直接获取底层 socket 数据流,此时请求中必须设置参数 stream=True 表示允许数据流处理
⚫ response.headers: 响应对象的响应头数据
⚫ response.status_code: 响应对象中的响应状态码
⚫ response.cookie:获取响应对象中包含的 cookie 数据
【3】数据筛选2 - requests的更多相关文章
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)
系列目录 前言 听标题的名字似乎是一个非常牛X复杂的功能,但是实际上它确实是非常复杂的,我们本节将演示如何实现对数据,进行组合查询(数据筛选) 我们都知道Excel中是如何筛选数据的.就像下面一样 他 ...
- DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样
'近日有本论坛网友问:DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样 '今晚正好闲着没事,加之以前也没用到过这个需求,所以就写了个模拟功能,供各位坛友酌情参考. ...
- layui table 根据条件改变更换表格颜色 高亮显示 数据筛选
请问想让当layui表格的某个字段符合某个条件的时候,让该行变颜色.这样可以实现么. layui数据表格怎么更换表格颜色 layui表格 通过判断某一行中的某一列的值进行设置这一行的颜色 LayUI之 ...
- C#进行数据筛选(二)
这里介绍LINQ+Lambda表达式进行数据筛选的方式 这里是第一种方式,还是使用了if条件语句去判断,根据选择的条件去筛选出我所需要的数据 public GxAnaly SelectDay(stri ...
- C#进行数据筛选(一)
这里介绍数据筛选的第一种方式,不用过滤器,给新手看得 public DataTable SourceList(string Wmain, string OrderNo, string Process) ...
- 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍
爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...
- python之pandas数据筛选和csv操作
本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c (1)单条件筛选 df[df[] # 如果想筛选a列的取 ...
- Pandas 数据筛选,去重结合group by
Pandas 数据筛选,去重结合group by 需求 今小伙伴有一个Excel表, 是部门里的小伙9月份打卡记录, 关键字段如下: 姓名, 工号, 日期, 打卡方式, 时间, 详细位置, IP地址. ...
- 【杂记】mysql 左右连接查询中的NULL的数据筛选问题,查询NULL设置默认值,DATE_FORMAT函数
MySQL左右连接查询中的NULL的数据筛选问题 xpression 为 Null,则 IsNull 将返回 True:否则 IsNull 将返回 False. 如果 expression 由多个变量 ...
随机推荐
- jQuery 插件开发全解析
jQuery插件的开发包含两种: 一种是类级别的插件开发,即给jQuery加入新的全局函数,相当于给jQuery类本身加入方法.jQuery 的全局函数就是属于jQuery命名空间的函数,还有一种是对 ...
- codeforce1070 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) 题解
秉承ACM团队合作的思想懒,这篇blog只有部分题解,剩余的请前往星感大神Star_Feel的blog食用(表示男神汉克斯更懒不屑于写我们分别代写了下...) C. Cloud Computing 扫 ...
- go语言笔记——map map 默认是无序的,不管是按照 key 还是按照 value 默认都不排序
示例 8.1 make_maps.go package main import "fmt" func main() { var mapLit map[string]int //va ...
- JAVA不让类实例化的方法
虽然java是面向对象编程,但也要尽可能避免创建不必要的对象,因为创建过多的对象不仅占用系统资源,而且多了很多不必要的创建销毁对象开销. 那么有哪些避免类创建对象的方法吗? 1,定义私有构造函数.这在 ...
- bzoj3940
AC自动机 复习一下... 可惜又写错了 我们发现就是把单词建成ac自动机,然后把串在ac自动机上跑一遍,每到一个单词结束点就删除,删除是利用栈,每次弹出单词长度个字符就可以了 发现两个小问题,str ...
- ORACLE数据删除数据删除的解决办法
今天主要以oracle数据库为例,介绍关于表中数据删除的解决办法.(不考虑全库备份和利用归档日志)删除表中数据有三种方法:·delete(删除一条记录)·drop或truncate删除表格中数据 1. ...
- P4166 [SCOI2007]最大土地面积
传送门 首先,四边形的四个点肯定都在凸包上(别问我为什么我也不知道,感性理解一下好了) 那么我们可以求出凸包之后\(O(n^4)\)暴力枚举,据说在随机数据下凸包上的点只有\(O(logn)\)个可过 ...
- [Swift通天遁地]八、媒体与动画-(8)使用开源类库快速实现位移动画
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- ZOJ3714JavaBeans
#!/usr/bin/env python # encoding: utf-8 t = int(raw_input()) for i in range(t): n,k = [int(x) for x ...
- Django总结三
回顾: - 装饰器 模板 - def wrapper(func): def inner(*args, **args): 执行被执行函数之前的操作 res = func(*args, **args) 执 ...