网络请求与 Requests 库入门

网络请求与 Requests 库入门

1. 实验目标

Requests入门

2. 实验主要使用的 P y t h o n Python Python 库[¶](https://e-d6afbf28d6.wd.dolphin-labs.com/notebooks/jupyter/Spider001-001/01_network requests_v5.ipynb?view=edit&deploy=online&roles=[1]#2.-实验主要使用的- P y t h o n Python Python-库)

名称版本简介
r e q u e s t s requests requests 2.22.0 2.22.0 2.22.0数据采集

3. 实验步骤

步骤1 什么是爬虫

爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。

比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿。

步骤2 浏览网页的过程

在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器 HTML、JS、CSS 等文件,浏览器解析出来,用户便可以看到形形色色的图片了。

因此,用户看到的网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些 HTML 代码,实现对图片、文字等资源的获取。

步骤3 URL的含义

URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL的格式由三部分组成:
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。

爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据,准确理解它的含义对爬虫学习有很大帮助。

比如你开启浏览器访问某个页面时,浏览器就会向网站服务器发送一串数据——请求request;服务器收到请求后,返回一串数据,也就是response。

那么爬虫也就是在重复这个过程,只不过,这里把浏览器换成了爬虫程序,最终数据流向从流向你本人变成了流向数据库。以及这里服务器给的响应response也就是爬虫想得到的数据了。

那这个用request获取response有什么玄机呢?
先从request结构说起:

  • request,里面包括url:目标网址,有时候身份标识也会被服务器要求放在url里面,随request一通丢给服务器
  • headers:请求头,里面包含杂七杂八的参数,只讨论对爬虫重要的——user-agent:浏览器标识,表示你用的浏览器类型
  • cookies:服务器给你的身份标识,在你登录后或者是访问后,由服务器扔过来的数据,浏览器会自动把它存起来,请求时把身份加进去,服务器就知道你是哪位用户了。注:一种说法说是单独的字段,另一种说法是cookies包含在请求头里,管他呢,具体写法看一下文档,把cookies扔进代码里,该加在哪里,程序会为你搞定一切,反正能运行,就行了,手动括弧笑。就Python而言,这边的坑就是,不同的库、包对传入cookies格式是有要求的,比如字典、字符串、编码格式utf-8的bytes等。这里一定要仔细看文档,别自己一通复制粘贴乱搞,善用搜索引擎、Github前人的代码、Pycharm设置断点debug查变量传递过程。

基本上一个request里包含了,目标资源url,身份标识,浏览器标识,大部分网站的数据都能爬下来了。

步骤4爬取一个网页

怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS、CSS,如果把网页比作一个人,那么HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。所以最重要的部分是存在于HTML中的,下面我们就写个例子来扒一个网页下来。

代码示例:

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

代码示例:

import requests

r = requests.get('https://www.baidu.com')
print(type(r))
print(r.status_code)
print(r.encoding)
print(r.cookies)
print(r.text)

步骤5POST 和 GET 请求方式

上面的程序演示了最基本的网页抓取,不过,现在大多数网站都是动态网页,需要你动态地传递参数给它,它做出对应的响应。所以,在访问时,我们需要传递数据给它。最常见的情况是什么?对了,就是登录注册的时候呀。

把数据用户名和密码传送到一个URL,然后你得到服务器处理之后的响应,这个该怎么办?下面让我来为小伙伴们揭晓吧!

数据传送分为POST和GET两种方式,两种方式有什么区别呢?

最重要的区别是GET方式是直接以链接形式访问,链接中包含了所有的参数,当然如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。POST则不会在网址上显示所有的参数,不过如果你想直接查看提交了什么就不太方便了,大家可以酌情选择。

POST方式:
上面我们说了data参数是干嘛的?对了,它就是用在这里的,我们传送的数据就是这个参数data,下面演示一下POST方式。

代码示例:

values = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("https://www.baidu.com", data=values)
print(r.text)
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页