目录
1.4 爬虫的矛与盾
⭐不停的学习,是为了摆脱平凡...🌈
活动地址:CSDN21天学习挑战赛
1. 爬虫概述
1.1 爬虫作用
对于个人:可以保存图片、行业数据、视频、歌曲等。
对于爬虫工程师:公司数据需要、数据分析、智能产品练习数据等。
1.2 爬虫与Python
爬虫不一定非得用 Python,Java、C语言也可以。编程语言是工具,爬取数据是目的,在实现目的过程中只要达到目的,使用什么工具都是可以的。而大多数人喜欢用 Python 的原因是 Python写爬虫简单。
1.3 爬虫是否合法
爬虫在法律上是不被禁止的,也就是说法律允许爬虫的存在。但是万物都有两面性,爬虫分为善意的爬虫和恶意的爬虫。善意的爬虫,不会破坏被爬取的网站的资源,正常访问频率,不窃取用户隐私;恶意的爬虫会影响网站的正常运营,抢票、疯狂秒杀网站资源可能会导致网站崩溃。
为了避免损失,我们在爬虫时要合理爬取,避免干扰网站的正常运行,发现正在爬取的数据涉及用户隐私和商务机密等敏感内容时,及时终止爬取和传播。
1.4 爬虫的矛与盾
反爬机制:门户网站,可以通过制定相应的策略或技术手段,防止爬虫程序进行网站数据的爬取。
反反爬策略:爬虫程序可以通过制定相关的策略或技术手段,破解门户网址中具备的反爬机制,从而可以获取网站中相关的数据。不可强行反反爬虫,可能已经涉及恶意爬虫。
robots.txt协议:君子协议,规定了网站中哪些数据可以爬取,哪些数据不可以爬取,在爬取网站前,最好先看一下。
2. 爬虫相关知识
2.1 HTML
HTML 全称“超文本标记语言”,与程序设计语言有所区别,无逻辑架构,采用标记方式进行网页构建,使用“<>"将标记括起来。
可以保存以下代码,生成一个以“.html”为后缀的文件。双击可以打开一个网页。可以先创建“.txt”文件,再修改后缀名。
<html>
<head>
<title>测试页码</title>
<head>
<body>
<p>这是小浪宝宝的网页!</p>
<body>
</html>
打开后的界面:
标签名 | 说明 |
---|---|
<p> | 段落标记 |
<a> | 超链接 |
href | 超链接地址 |
<img> | 图片 |
src | 图片存放路径 |
<span> | 行内标签 |
<li> | 列表项 |
<div> | 划分HTML块 |
<table> | 表格标记 |
<tr> | 行标记 |
<td> | 列标记 |
h1~h6 | 标题 |
2.2 CSS基础
CSS 是层叠样式表,控制 HTML 页面的样式和布局,使用 {} 将样式定义括起来。
元素选择器:元素选择器根据元素名称来选择 HTML 元素。
id 选择器:使用 HTML 元素的 id 属性来选择唯一特定元素。
类选择器:选择有特定 class 属性的 HTML 元素。
2.3 URL网址解释
案例网址:
https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/5162711?fromtitle=%E7%88%AC%E8%99%AB&fromid=22046949
URL(网址)是 Uriform Resource Locator 的简写,统一资源定位符。URL 由以下几部分组成。
- 协议的类型。如:https
- 主机名称/域名。如:baike.baidu.com
- 端口号
- 查找路径。如:5162711?
- 查询参数(为 ?后面所有内容)。如:fromtitle=%E7%88%AC%E8%99%AB&fromid=22046949
- 锚点:前端用来做面定位的。现在一些前后端分离项目,也用锚点来做导航
2.4 HTTP 与 HTTPS
HTTP 协议:全称是 Hyper Text Transfer Protocal,中文意思是超文本传输协议,是一种发布和接收 HTML(Hyper Text Markup Language)页面的方法。服务端口号为:80。
HTTPS 协议:全称是Hyper Text Transfer Protocal over SecureSocket Layer,是 HTTP 协议的加密版本,在 HTTP 下加入了SSL层,服务端口号是:443。
2.4.1 常见的请求方式
HTTP协议规定了浏览器与服务器进行数据交互的过程中必须要选择一种交互方式。在HTTP协议中,定义了八种请求方式,常见的有get请求和post请求。
get请求:一般情况下,只从服务器获取数据,不会对服务器资源产生任何影响的时候使用get请求。
post请求:向服务器发送数据(登录数据)、上传文件等,会对服务器资源产生影响的时候会使用post请求。请求参数在 From Data中。
2.4.3 常见请求头
http协议中,向服务器发送一个请求,数据分为三部分:
- 数据放在url里
- 数据放在body中(post请求时)
- 数据放在head中
常见的请求头参数:
- user-agent :浏览器名称
- referer :表明当前这个请求是从url过来的
- cookie :http协议是无状态的,也就是同一个人发送了两次请求,服务器并没有能力知道这两个请求是否来自同一个人,而带上cookie就识别为登录的用户,类似于身份信息。
2.4.4 常见请求状态码:
- 200:请求正常,服务器正常的返回数据
- 301:永久重定向。比如访问一个网页,会自动跳转到另一个网页。
- 404:请求的url在服务器上找不到,换句话说就是请求的url错误。
- 418:发送请求遇到服务器反爬虫,服务器拒绝响应数据。
- 500:服务器内部错误,可能是服务器出现了bug
2.5 浏览器分析网站
随便打开一个浏览器,右键——>检查 或按F12,会出现网页编辑器。
- Element:可以帮助我们分析网页结构,获取想要的数据。
- Console:控制台,打印输出网站的一些信息,比如网站的招聘信息。
- Souerce:相当于一个文件夹,加载这个网页所需要的所有的源文件,除了Elements的源代码之外,还有一些CSS文件、JS文件等
- Network:查看整个网页发送的所有网络请求。一般我们向查看某一个请求的信息,都可以到这里去查看。
2.6 Session与Cookie
Session与Cookie是用于保持HTTP长时间连接状态的技术。
Session:
- Session代表服务器与浏览器的一次会话过程。
- Session是一种服务器端的机制,Session对象用来存储特定用户会话所需的信息。
- Session由服务器端生成,保存服务器的内存、缓存、硬盘或数据库中。
Cookie:是由服务器端生成后发送给客户端(通常是浏览器),Cookie总是保存在客户端。
2.7 Ajax请求
- Ajax在浏览器与Web浏览器之间使用异步数据传输方式,这样可以使网页从服务器请求少量的信息;而不是整个页面。
- Ajax技术独立于浏览器和平台。
- Ajax一般返回的是JSON,直接对Ajax地址进行post或get,就返回JSON数据了。
- 判断事都为Ajax生成数据,看滚动网页的时候是否发送了刷新,如果页面没有刷新,则数据是自动生成,Ajax渲染到界面。