L1&L2 网络爬虫

L1 & L2 爬虫基础知识

1 网页爬虫

1-1 网络爬虫

网络爬虫(Web Crawler):按照一定规则自动爬取网页信息的程序。

爬虫相当于网页上爬行的蜘蛛,每爬到一个节点就能够访问该网页的信息,又称网络蜘蛛(Web Spider)。

1-2 网络爬虫的原理

源代码(Source Code):人类能够看得懂的计算机语言指令,被翻译成计算机可执行的代码。

日常浏览的网页中,既有图片、文字,还有精致的排版,这都是依靠源代码的功劳。
源代码会定义每个标题、段落、图片等排版,浏览器通过解析源代码,呈现出网页画面。
因此,爬虫获取的就是浏览器解析之前的源代码。

1-3 爬虫的应用

人类正常获取信息的方式:打开网页,点击评论区,逐条翻看信息。
网络爬虫:自动获取网页的所有信息,通过网页中的评论内容,将信息保存到文档中,便于对数据进行查看和分析。

因此,网络爬虫就是自动化从网页上获取信息、提取信息和保存信息的过程。

1-4 链接(URL)、主机名、文件路径

链接(URL,Uniform Resource Locator):统一资源定位符,指定了我们要查找资源的地址。
https://主机名/文件路径名(可省略)

主机名(hostname),主机名就是我们要访问的计算机的名字。

“//”为分隔符,表示后面的字符串是主机名。
主机名后面的“/”表明,要在后面写上文件地址,如果不写一般默认为主页。

1-5 服务器

我们访问网页资源是存在服务器中的。
服务器可用于管理资源并为用户提供服务,其特点就是运算速度快,能为大量用户服务。
服务器的种类有很多,当浏览网页时其主要作用就是将网页信息提供给浏览器,此时的服务器也被称为Web服务器。

1-6 HTTP(S)协议

超文本传输协议(http,HyperText Transfer Protocol):互联网数据传输的一种规则,它规定了数据的传输方式。HTTP协议定义了客户端和服务器之间传递消息的内容和步骤。

超文本传输安全协议(HTTPS,HyperText Transfer Protocol Secure)。
HTTP协议在进行数据传输时,内容是未加密的,传输内容可能被窃听或篡改,安全性较差。
HTTPS并非是全新的协议,只是在传输之前加了一层保护,让内容安全不易被窃听。
所以说,HTTPS协议是HTTP的安全版,使用HTTPS传输能够让传输的数据更安全。

2 链接和请求响应

2-1 HTTP协议

HTTP协议规定了浏览器和服务器之间传递消息的内容和步骤,具体如下:

  1. 【浏览器】会先发送HTTP请求,告诉Web服务器需要的数据。
  2. 【Web服务器】收到请求后,按照请求执行,并返回HTTP响应消息。
  3. 【浏览器】收到返回的数据后,会将源代码解析成网页展示出来。

2-2 消息请求

HTTP发送的请求(Request)消息主要包含两部分“对什么”和“怎么做”。

  1. “对什么”是我们前面学习的URL,就是要访问的目标。
  2. “怎么做”一般叫做方法,是指让Web服务器完成什么工作。
    由于浏览器发送请求时,将“对什么”和“做什么”信息放在头部。所以,存放这些信息的地方又叫请求头(Request Headers)。

2-3 消息响应

在HTTP协议中:Web服务器收到请求消息后,会根据请求进行处理。并将响应(Response)消息返回给浏览器。
响应消息的头部叫做响应头(Response Headers),响应头中的数据用于告诉浏览器此次请求执行失败还是成功。

2-4 状态码

状态码是由3位数字构成,位于响应头(Response Headers)中,主要用于告知客户端的HTTP请求的执行结果。

备注:状态码数量很多,不需要去特别记忆,用到时搜索即可。
状态码 含义
1XX 告知请求的处理进度和情况
2XX 成功
3XX 表示需要进一步操作
4XX 客户端错误
5XX 服务器错误

如:状态码为200,表示执行成功,浏览器此次的请求正常执行。
状态码404 (Not Found)表示服务器无法找到请求的资源,或者,有的服务器拒绝你的请求并不想说明理由时也会提示404。
状态码503(Service Unavailable)表示服务器处于超负荷状态或正在进行停机维护,现在无法处理浏览器的请求。

3 爬虫注意事项

3-1 网络的基本规则-- robots协议

使用爬虫获取网络资源时,需要遵循网络的基本规则–robots协议。
这个协议一方面是一个爬虫技术人员需要遵守的道德准则。
另一方面,如果将爬取结果商用并获取利益,还会面临法律风险。

Robots协议是国际互联网界通行的道德规范,基于以下原则建立:
1、搜索技术应服务于人类,同时尊重信息提供者的意愿,并维护其隐私权;
2、网站有义务保护其使用者的个人信息和隐私不被侵犯。

robots.txt文件是一个文本文件,robots.txt是一个协议。robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。

Robots协议用来告知搜索引擎哪些页面能被抓取,哪些页面不能被抓取;可以屏蔽一些网站中比较大的文件,如:图片,音乐,视频等,节省服务器带宽;可以屏蔽站点的一些死链接。方便搜索引擎抓取网站内容;设置网站地图连接,方便引导蜘蛛爬取页面。

3-2 爬虫的影响

1.影响服务器性能,爬虫主要请求服务器的资源,大量快速的访问服务器,会影响服务器速度,耗费服务器性能。
2.法律风险,图片、视频或摄影作品等大部分是有版权的,将抓取的内容商业化也可能带来风险。

4 动手操作:网络爬虫初次尝试

4-1 环境准备:安装requests模块

在电脑终端输入代码:pip install requests
如果在自己电脑上安装不上或安装缓慢,可在命令后面添加如下配置进行加速:pip install requests -i https://mirrors.aliyun.com/pypi/simple/

4-2 代码库准备:使用import导入requests模块

import requests

4-3 获取状态码

requests.get()函数可用于模拟浏览器请求网页的过程,是获取网页信息的主要函数,get()函数中传入要访问网页的URL,会返回一个Response对象,也就是前面说到的响应消息。

使用print输出响应消息会得到Response [200]表示响应消息中状态码为200,说明此次浏览器的请求执行成功。

使用.status_code属性就可以查看状态码,这里输出的状态码数据类型是整型。

代码功能:获取状态码
全文:

# 使用import导入requests模块
import requests
# 将网页链接赋值给url
url = "https://www.baidu.com/"
# 使用requests.get()方法获取url的内容,将结果赋值给response
response = requests.get(url)
# TODO 使用.status_code属性获取状态码,并赋值给statusCode
statusCode=response.status_code

4-4 获取网页内容

用到.text属性,该属性能够将获取到的网页信息提取出来。

代码功能:获取网页内容
全文:

# 使用import导入requests模块
import requests

# 将网页链接赋值给url
url = "https://www.baidu.com/"

# 使用requests.get()方法获取url的内容,将结果赋值给response
response = requests.get(url)

# 使用if语句判断.status_code属性获取的状态码等于200时
if response.status_code == 200:
    # TODO 使用.text属性获取网页前1000个字符的内容,并赋值给content
    content=response.text[:1000]
    # 输出content
    print(content)

# 不满足if的条件时
else:
    # 输出 请求数据失败
    print("请求数据失败")

4-5 HTML语言

超文本标记语言(HTML语言, HyperText Markup Language),用来定义网页内容和结构。
HTML是由一系列的标签组成,这些标签组合起来就是我们浏览器看到的网页。

标签:是用来标记内容块的,主要有两种形式成对出现和单独出现。

一、成对出现的标签
<开始标签>内容<结束标签>
结束标签只比开始标签多一个斜杠"/"。
1. <html></html>表明这是一个网页文档。
2. <head></head>标签用于定义文档的头部信息,这些信息不会展示在网页中。
3. <body></body>标签用于定义文档的主体,包含网页的图片、文字、链接、视频等多种展现形式。
二、单独标签
1. <br>就是单独出现的标签,表示换行。
2.标签是可以嵌套的。

属性:用于丰富表现形式,一般放在开始标签里,并且以属性名="属性值"的形式展现。
例如: align=“center”,这里center属性值的作用就是让标签的内容居中。
属性还可以描述内容的颜色、边框等等。

代码功能:html示例
全文:

<!DOCTYPE html>	
<html>	
<head>	
<title>网络爬虫课程</title>	
</head>	
<body>	
    <h1 align="center">我的第一个标题-居中显示</h1>  
    <h2>我的第二个标题,不居中显示</h2>	
    <p>我的第一个段落。<br>	
        一些内容<br>	
        另一些内容<br>	
    </p>	
</body>	
</html>	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值