当前位置:   article > 正文

爬虫—获取网页_爬取一个网页

爬取一个网页


前言

提示:这里可以添加本文要记录的大概内容:

爬虫是模仿人类自动访问网站从程序,在浏览器的大部分动作基本都可以通过网络爬虫程序来实现。网络爬虫指的是能够自动化访问网站的程序,其目的一般是提取和保存网页信息。


提示:以下是本篇文章正文内容,下面案例可供参考

一、网络信息的爬取流程

网络爬虫的流程主要可以分为三步:获取网页、解析网页以及存储数据获取网页:获取网页信息,获取网页源代码
解析网页:从网页源代码中提取想要的数据,由于网页结构有一定规则,配合 Python第三方库可以高效地提取网页数据。
存储数据:将数据存储下来。

有专门的Robots协议来规范爬虫,维护网络秩序,告诉网络爬虫程序哪些内容可以获取,哪些内容不能获取。

二、网络请求工作原理

当我们访问网站时,首先我们会在浏览器中输入网页链接,然后按回车。这个动作其实是浏览器向网页所在服务器发送了一个请求。
服务器接收到浏览器的请求后进行处理,返回响应内容,传给浏览器。浏览器再对响应内容进行渲染,将网页呈现出来。
浏览器与服务器之间为:先请求,后响应。
在这里插入图片描述

2.1.request.get()函数

Requset库是一种使用简洁的Python第三方库,能够发起各种网络请求。
request.get()就是Request库中用来发起GET请求的函数。
Get请求用于从服务器获取数据,是比较常见的请求方法,像我们平时在浏览器中直接输入网址回车,这便发起了一个GET请求。

GET请求从服务器获取数据
POST请求向服务器提交数据
PUT请求向服务器更新数据

使用requests库发起请求并查看响应内容。
代码如下(示例):

import requests
#发送请求,并把响应结果赋值在变量res上
res = requests.get('https://www.baidu.com/')
print(res)
  • 1
  • 2
  • 3
  • 4

代码结果如下:
在这里插入图片描述

2.2 响应

用type()函数查看requests.get()函数返回结果的类型。
代码如下(示例):

import requests
#发送请求,并把响应结果赋值在变量res上
res = requests.get('https://www.baidu.com/')
#使用type()函数查看res类型,并将结果赋值到res_type上
res_type = type(res)
print(res_type)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

requests.get()函数返回结果是一个属于request.models.Response类的对象。
一般来说,服务器返回给浏览器的响应内容,主要包含了响应状态码、响应头和响应体等信息。
当服务器收到网络请求时,会返回一个三位数字的代码响应浏览期的请求,表示服务器对于这个请求的响应状态,即响应状态码。其中200代表服务器成功处理了请求,当然也有其它响应状态码,比如404指的就是服务器无法根据请求找到资源。

在这里插入图片描述
在这里插入图片描述


2.2.1 Response对象—status_code属性

Response.status_code属性就是响应状态码。
获取响应状态码代码如下:

import requests
#发送请求,并把响应结果赋值在变量res上
res = requests.get('https://www.baidu.com/')
#使用type()函数查看res类型,并将结果赋值到res_type上
print(res.status_code)
  • 1
  • 2
  • 3
  • 4
  • 5

代码结果如下所示:
在这里插入图片描述
访问页面的请求办法为GET,服务器成功接收请求并响应的状态码为200。

2.2.2 Response对象—text属性

通过响应状态码判断网络请求成功后,就可以查看具体的响应内容。
响应的正文数据都在响应体中,响应体就是网页的HTML代码。浏览器会将响应体直接渲染成相应的页面展示出来。
调用Response.text属性,查看具体的相应内容。

import requests
#发送请求,并把响应结果赋值在变量res上
res = requests.get('https://www.baidu.com/')
#调用Response对象的text属性,获取响应内容。
text = res.text
#打印响应内容
print(text)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

代码运行结果如下所示:
在这里插入图片描述

2.2.3 Response对象—encoding属性

将Response对象的encoding属性设置为中文字符的编码格式,响应内容就可以正常显示。
常用的中文字符编码格式有utf-8和GBK。
代码如下所示:

import requests
#发送请求,并把响应结果赋值在变量res上
res = requests.get('https://www.baidu.com/')
#调用Response对象的text属性,获取响应体
text = res.text
#将响应内容的编码格式设置为utf-8
res.encoding = 'utf-8'
text = res.text
#打印响应内容
print(text)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

代码结果如下:
在这里插入图片描述

三、网络爬虫伦理

通常情况下,服务器不太在意小爬虫。但是,服务器会决绝频率很高的大型爬虫和恶意爬虫,因为这会给服务器带来极大的压力和伤害。
互联网世界中,存在一个Robots协议,全程网络爬虫排除标准(Robots rxclusion protocol),是网站开发者用来告知网络爬虫那些页面可以抓取,哪些不行的协议。
如何查看网站的Robotos协议?在网站的主机域名后加上/robots.txt就可以了。
比如要查看百度首页的Robots协议,就直接访问https://www.baidu.com/robots.txt;要查看淘宝网的,直接访问https://www.taobao.com/robots.txt

总结

本章详细讲述爬虫-获取网页~
最近萌新菜鸟大人也感受到了职场的不开心,学会拒绝,拒绝职场工具人~

解释

此文仅为本人学习过程中的笔记,并非原创。我是菜鸟大人,一个只会写paper的小菜鸡 本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/845311

推荐阅读
相关标签