【人工访问网页】
在浏览器中输入网址。
回车【Enter】。
得到搜索结果。
这个动作其实就是浏览器向网页所在的服务器发送了一个请求。
服务器接收到浏览器的请求后进行处理,返回响应内容,传给浏览器。这个过程我们称之为响应。
最后浏览器再对响应内容进行渲染,将网页呈现了出来。
所以浏览器与服务器之间,是一个先请求,后响应的关系。
【备注】图片来源于风变编程。
爬虫的第一步是获取网页。
获取网页中最关键的一步就是模拟浏览器向服务器发出请求。
Python中有很多库都可以实现向服务器发送请求。
今天,我们先来学习requests库。
requests [rɪˈkwests]:请求;要求。
requests
库是Python的第三方库。
requests库的作用是模拟浏览器向服务器发送网络请求。
第三方库使用前需要安装,安装命令如下:
pip3 install requests
install[ɪnˈstɔːl]:安装。
requests [rɪˈkwests]:请求;要求。
【安装步骤】
【win】+【R】打开【运行】。
在【打开(O)】
后的框中输入【cmd】。
点击【确定】。
pip3 install requests
命令输入后点击回车。
我的安装后出现如下提示语句:
【提示语句1】
[notice] A new release of pip is available: 23.0.1 -> 23.1.2
翻译为注意pip的新版本可用:23.0.1 -> 23.1.2
。
【提示语句2】
[notice] To update, run: python.exe -m pip install --upgrade pip
翻译为[注意]要进行更新,请运行:python.exe-m pip安装-升级pip
。
【解决办法】
在【cmd.exe】中输入如下命令更新pip库。
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade pip
pip更新完毕后,在输入一次pip3 install requests
就能完成安装。
第三方库的安装可参考基础语法笔记第73、74节:
73.python第三方库安装教程
74. 'pip’不是内部或外部命令,也不是可运行的程序-解决办法
除了上述安装方法,还有其他安装方法。
更多详细的安装说明可参考崔庆才的个人站点https://setup.scrape.center/requests
。
崔庆才的个人站点:requests的安装
清华大学开源软件镜像站网址:https://mirrors.tuna.tsinghua.edu.cn/help/pypi
清华大学开源软件镜像站
根据代码书写步骤,我将获取网页分为4个步骤:
【准备工作】
pip3安装Python的requests
import 导入库
指定网址
发送请求
输出响应
下面让我们来运行体验一下调用requests.get()
函数发起网络请求。
【目标任务】
向百度首页https://www.baidu.com/
发起网络请求。
【代码示例】
# 1.导入库
import requests
# 2.定义url
url = 'https://www.baidu.com/'
# 3.发送请求,并把响应结果赋值给变量r
r = requests.get(url)
# 4.打印响应内容
print(r)
【终端输出】
requests库中内置了很多函数来帮我们实现各种网络请求。
像requests.get()就是requests库中用来发起get请求的函数。
get请求用于从服务器获取数据,是一种比较常用的请求方法,像我们平时在浏览器中直接输入网址回车,这便发起了一个get请求。
使用Python的库或模块,一开始需要导入该库或该模块。
【导入语法】
import+模块名
【代码示例】
# 1.导入库
import requests
【温馨提示】
注意这里的requests
库名最后是有一个s
的,不用错写成request
。
# 2.定义url
url = 'https://www.baidu.com/'
url是我起的变量名,变量名根据你自己的喜好命名即可。
url是一个字符串类型的变量,里面的内容就是我们要访问的网址。
【温馨提示】
注意网址前后需要加英文引号''
。
r = requests.get(url)
调用requests的get()方法,向服务器发送请求。
然后将响应结果返回给变量r。
【调用模块或库中的类、函数、变量的语法】
调用模块或库的类:模块名.类名()
,如 csv.DictReader()
调用模块或库的函数:模块名.函数名()
,如 os.mkdir()
调用模块或库的变量:模块名.变量名
,如 os.name
这里我们用的是第2种。
库名为requests
。
函数名为get
。
参数为url
。
【温馨提示】
注意库名和方法名之间有一个英文小圆点.
我们发送完请求后,服务器返回的内容存储在了变量r
中。
那r是个什么东西呢,我们用type函数来查看。
# 1.导入库
import requests
# 2.定义url
url = 'https://www.baidu.com/'
# 3.发送请求,并把响应结果赋值给变量r
r = requests.get(url)
# 4.1 查看返回值
print(r)
# 4.2 查看r的类型
print(type(r))
【终端输出】
【返回值】
返回
这里的200根据实际访问情况也可能是其他数值,以后再做说明。
【返回类型】
表示返回的是返回的是一个Response对象。
response[rɪˈspɒns]:响应。
可以理解成返回的是一个响应对象。
Response对象里存储着很多信息。
通过查看Response对象的属性,可以输出网页的文本信息、有响应的状态码等等。
# 1.导入库
import requests
# 2.定义url
url = 'https://www.chinawenwang.com/'
# 3.发送请求,并把响应结果赋值给变量r
r = requests.get(url)
# 4.1 查看返回值
print(r)
# 4.2 查看r的类型
print(type(r))
【终端输出】
只要返回
就表示爬虫程序访问网页成功。
# 1.导入库
import requests
# 2.定义url
url = 'https://www.umei.cc/'
# 3.发送请求,并把响应结果赋值给变量r
r = requests.get(url)
# 4.1 查看返回值
print(r)
# 4.2 查看r的类型
print(type(r))
【终端输出】
# 1.导入库
import requests
# 2.定义url
url = 'https://music.163.com/'
# 3.发送请求,并把响应结果赋值给变量r
r = requests.get(url)
# 4.1 查看返回值
print(r)
# 4.2 查看r的类型
print(type(r))
【终端输出】
Python的Requests库官方中文文档网址:http://cn.python-requests.org/zh_CN/latest/
Python的Requests库官方中文文档网址