爬虫分类
爬虫可分为三类:通用网络爬虫、聚焦网络爬虫和增量式网络爬虫
通用网络爬虫
通用网络爬虫是搜索引擎的重要组成部分,通用网络爬虫需要遵守robots协议,网站通过此协议告诉搜索引擎那些页面可以抓取,哪些页面不允许抓取。
robots协议:是一种“约定俗成”的协议,并不具备法律效力,它体现了互联网人的“契约精神”。行业从业者会自觉遵守该协议,因此它又被称为“君子协议”。
聚焦网络爬虫
是面向特定需求的一种网络爬虫程序。它与通用爬虫的区别在于:聚焦爬虫在实施网页抓取的时候会对网页内容进行筛选和处理,尽量保证只抓取与需求相关的网页信息。聚焦网络爬虫极大地节省了硬件和网络资源,由于保存的页面数量少所以更新速度很快,这也很好的满足一些特定人群对特定领域信息的需求。
增量式网络爬虫
是指对已下载网页采取增量式更新,它是一种只爬取新产生的或者已经发生变化网页的爬虫程序,能够在一定程度上保证所爬取的页面是最新的页面。
编写爬虫的流程
爬虫程序与其他程序不同,它的思维逻辑一般都是相似的,所以无需我们在逻辑方面花费大量的时间。下面对python编写爬虫程序的流程做简单地说明:
- 先有urllib模块的request方法打开url,得到网页HTML对象
- 使用浏览器打开网页源代码分析网页结构以及元素节点
- 通过Beautiful Soup或正则表达式提取数据
- 存储数据到本地磁盘或数据库
网页构成
网页一般由三部分组成,分别是HTML(超文本标记语言)、CSS(层叠样式表)和JavaScript(简称“JS”,动态脚本语言),它们三者在网页中分别承担着不同的任务。
- HTML负责定义网页的内容
- CSS负责描述网页的布局
- JavaScript负责网页的行为
HTML
HTML是网页的基本结构,它相当于人体的骨骼结构。网页中同时带有“<”,“>”符号的都属于HTML标签。常见的HTML标签如下:
标签 | 描述 |
---|---|
声明为HTML5文档 | |
.. | 网页的根元素 |
.. | 包含了文档的元数据,如定义网页编码格式为utf-8 |
描述文档的标题 | |
.. | 定义文档的主体 |
.. |
定义文档中的节 |
.. |
定义文档中的段落 |
|
定义无序列表 |
|
定义有序列表 |
定义列表的项目 | |
定义图像 | |
.. |
定义标题 |
<a href="">.. | 定义超文本链接 |
定义注释 |
编写如下代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Torres</title>
</head>
<body>
<a href="www.baidu.com">点击访问</a>
<h1>托雷斯www.torres.com</h1>
<h2>Python爬虫</h2>
<div>
<p>认识网页结构</p>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JS</li>
</ul>
</div>
</body>
</html>
运行结果如下:
CSS
css表示层叠样式表,其编写方法有三种,分别是行内样式、内嵌样式和外联样式。CSS代码演示如下:
<!DOCTYPE html>
<html>
<head>
<!--内嵌样式-->>
<style type="text/css">
body {
background-color: yellow;
}
p {
font-size: 30px;
color: springgreen;
}
</style>
<meta charset="utf-8">
<title>Torres</title>
</head>
<body>
<!--h1标签使用了行内样式-->
<h1 style="color: blue;">托雷斯www.torres.com</h1>
<a href="www.baidu.com">点击访问</a>
<h2>Python爬虫</h2>
<div>
<p>认识网页结构</p>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JS</li>
</ul>
</div>
</body>
</html>
运行结果如下:
PS:
- 内嵌样式通过style标签书写样式表
- 行内样式则通过HTML元素的style属性来书写CSS代码。(注:每一个HTML元素,都有style、class、id、name、title属性)
- 外联样式表则指的是CSS代码单独保存为以.css结尾的文件,并使用引入到所需页面。当样式需要被应用到多个页面的时候,使用外联样式表是最佳的选择。
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
JavaScript
js负责描述网页的行为,比如,交互的内容和各种特效都可以使用js来实现。当然也可以通过其他方式实现,比如jQuery、还有一些前端框架(Vue、React等),不过它们都是在js的基础上实现的。
简单示例:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body {
background-color: rgb(220, 226, 226);
}
</style>
<meta charset="utf-8">
<title>Torres</title>
</head>
<body>
<h1 style="color:blue">托雷斯www.torres.com</h1>
<h2>python爬虫</h2>
<p>点击下方按钮获取当前时间</p>
<button onclick="DisplayDate()">点击这里</button>
<p id="time" style="color: red;"></p>
<!--script标签内部编写js代码-->
<script>
function DisplayDate() {
document.getElementById("time").innerHTML = Date()
}
</script>
</body>
</html>
运行结果如下:
总结
如果用人体来比喻网站结构的话,那么HTML是人体的骨架,它定义了人的嘴巴、眼睛、耳朵长在什么位置;CSS描述了人体的外观细节,比如嘴巴长什么样子,眼睛是双眼皮还是单眼皮,皮肤是黑色还是白色等;而js则表示人拥有的技能,比如唱歌、打球、游泳等。