【3】数据筛选2 - requests

目录

    1.概述
    2.下载安装
    3.入门程序
    4.请求对象:请求方式
    5.请求对象:GET参数传递
    6.请求对象:POST参数传递
    7.请求对象:定制请求头
    8.请求对象:cookie
    9.响应对象


1.概述


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 数据的操作并且更加适合跨域场景
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 数据
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容