大数据 map转string Filecoin Appuim环境搭建 matlotlib json ssl post vue双向绑定 jquery的点击事件 jquery通过class获取元素 oracle查看数据库状态 android富文本框架 grep不是内部命令 mysql卸载工具 python集合操作 python语言 windows安装python环境 python自学入门 java开发 java泛型 javarandom java时间格式化 java获取时间 python源码下载 swing布局 coreldraw11 易语言进度条 忧思华光玉 刷机工具下载 渐变事件 fdisk下载 2700U medcalc 论文修改软件 安卓adb jq改变css样式 小米9截屏 威纶通触摸屏编程软件 求字符串长度
当前位置: 首页 > 学习教程  > 编程语言

网络爬虫规则 Requests 库实战

2020/12/5 11:01:26 文章标签:

网络爬虫规则 Requests 库实战 1. 实验目标 Requests入门 2. 实验主要使用的 𝑃𝑦𝑡ℎ𝑜𝑛Python 库 名称版本简介𝑟𝑒𝑞𝑢𝑒𝑠𝑡…

网络爬虫规则 Requests 库实战

1. 实验目标

Requests入门

2. 实验主要使用的 𝑃𝑦𝑡ℎ𝑜𝑛Python 库

名称版本简介
𝑟𝑒𝑞𝑢𝑒𝑠𝑡𝑠requests2.23.02.23.0数据采集

4. 实验步骤

步骤1 基本GET请求

之前我们介绍了 requests 库的基本只是和简单使用,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助。入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取。那么本实验实战一下 requests 库的基本用法。

最基本的GET请求可以直接用get方法

r = requests.get("http://httpbin.org/get")

如果想要加参数,可以利用 params 参数

代码示例:

# 安装第三方库
pip install requests==2.23.0

代码示例:

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print(r.url)

如果想请求JSON文件,可以利用 json() 方法解析

例如自己请求 http://httpbin.org/json 这个URL,返回一个 JSON 结果,利用如下程序请求并解析:

代码示例:

r = requests.get("http://httpbin.org/json")
print(r.text)
print(r.json())

观察运行结果,其中一个是直接输出内容,另外一个方法是利用 json() 方法解析,感受下它们的不同。

如果想添加 headers,可以传 headers 参数:

代码示例:

payload = {'key1': 'value1', 'key2': 'value2'}
headers = {'content-type': 'application/json'}
r = requests.get("http://httpbin.org/get", params=payload, headers=headers)
print(r.url)

通过headers参数可以增加请求头中的headers信息

步骤2 基本POST请求

对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data 这个参数。

代码示例:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)
print(r.text)

可以看到参数传成功了,然后服务器返回了我们传的数据。
有时候我们需要传送的信息不是表单形式的,需要我们传JSON格式的数据过去,所以我们可以用 json.dumps() 方法把表单数据序列化。

步骤3 Cookies

如果一个响应中包含了cookie,那么我们可以利用 cookies 变量来拿到

import requests

url = 'http://example.com'
r = requests.get(url)
print(r.cookies)

以上程序仅是样例,可以用 cookies 变量来得到站点的 cookies

另外可以利用 cookies 变量来向服务器发送 cookies 信息

代码示例:

url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)
print(r.text)

已经成功向服务器发送了 cookies

步骤4 超时配置

可以利用 timeout 变量来配置最大请求时间

requests.get('http://github.com', timeout=0.001)

注:timeout 仅对连接过程有效,与响应体的下载无关。

也就是说,这个时间只限制请求的时间。即使返回的 response 包含很大内容,下载需要一定时间,与这个超时配置无关。

步骤5 会话对象

在以上的请求中,每次请求其实都相当于发起了一个新的请求。也就是相当于我们每个请求都用了不同的浏览器单独打开的效果。也就是它并不是指的一个会话,即使请求的是同一个网址。 在一些站点中,我们需要保持一个持久的会话怎么办呢?就像用一个浏览器逛淘宝一样,在不同的选项卡之间跳转,这样其实就是建立了一个长久会话。解决方案如下:

代码示例:

s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)

在这里我们请求了两次,一次是设置 cookies,一次是获得 cookies

观察运行结果,发现可以成功获取到 cookies 了,这就是建立一个会话到作用。体会一下。

那么既然会话是一个全局的变量,那么我们肯定可以用来全局的配置了。

代码示例:

s = requests.Session()
s.headers.update({'x-test': 'true'})
r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
print(r.text)

注意:通过 s.headers.update 方法设置了 headers 的变量。然后我们又在请求中设置了一个 headers,那么两个变量都传送过去,并且通过 get() 方法传的 headers 会覆盖掉全局的配置。


本文链接: http://www.dtmao.cc/news_show_450382.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?