今天给大家分享一下网络爬虫的基础知识,以及一些优秀的开源爬虫项目。网络爬虫主要是我们在面对新的任务,但自己又没有数据的时候,获取自己想要的数据的一种手段。因此我们有必要掌握一定的爬虫知识,从而更好的准备训练数据集。
作者 | 言有三
编辑 | 言有三
1 前端网页基础
在介绍爬虫之前我们先介绍一下网页基础,理解前端网页有利于我们对后面爬虫的学习,它是爬虫的基础之一。
1.网页构成
通常来说网页由三部分组成,分别为 HTML、CSS 以及 Javascript。HTML 承担网页内容,CSS 负责对网页的排版美化,而 Javascript 则使得网页更加有交互性。接下来我们分别介绍这三个部分。
(1) HTML,即 HyperText Mark-up Language,中文名超文本标记语言。超文本指的是超链接,标记指的是标签,所以 HTML 文件由一个个标签所组成的。
(2) CSS 即层叠样式表,它用来定义如何显示控制 HTML 元素,像拼图一样对 HTML 标签进行拼图,得到美观,优雅的网页显示效果。
(3) JavaScript,上面介绍的 HTML 和 CSS 只能展现一种静态的信息,缺乏交互性。我们在网页中看到的诸如轮播图等动态效果,都是基于 Javascript 实现的。在前后端分离的开发中,Javascript 还会担任一部分的逻辑操作。它的出现使得用户与网页信息之间不再只是一种冷冰冰的浏览与显示关系,而是实现了一种实时、动态、交互的页面功能。
爬虫最主要的处理对象就是 URL,通过对 URL 的解析互取所需要的内容,然后再做进一步的处理。其格式由3部分组成:
(2) 存有该资源的主机的IP地址(有时也包括端口号)
(3) 路径,一般来说不同部分之间以斜线(/)分隔。
2 爬虫基础概述
2.数据爬取
Python 拥有很多优秀的开源库,针对爬虫,python2 有 urllib1、2,python3 有自带的 urllib库。接下来我们以 python3(以下默认为 python )为例,介绍 urllib。
(1) urllib 介绍
Python urllib库官方文档链接:
在这个页面中我们可以选择对应的 python 版本进行 urllib 库的学习。
(2) urllib 基础用法
3.数据解析
我们通过上面的学习,了解了如何使用 urllib 进行数据爬取。但只对数据进行爬取是不足够的,所以我们要学习使用数据解析库,对爬取的数据进行数据解析。数据解析方面的库有:beautifulsoup4、lxml、re 等。接下来我们以 BeautifulSoup 为例,来看一下数据解析过程:
3 爬虫框架
通过上面的基本爬虫的简单学习,我们发现使用原始的爬虫存在着低效率、代码量大的缺点,一般只能用作小型项目的爬虫。接下来我们会介绍一个爬虫框架,我们现在有了基础爬虫的知识,所以这个框架我们可以快速的上手,实现中等规模的爬虫。
Scrapy 框架是一个专门由 python 开发的,用于快速、高层次的屏幕抓取和 web 抓取框架,用于抓取 web 站点并从页面中提取结构化的数据。Scrapy 框架可以用于数据挖掘、监测和自动化测试。它提供用户进行各种类型爬虫的编写,如我们前面提到的增量式网络爬虫等。
2. Scrapy 的安装
pip install scrapy
3. Scrapy 框架的基本使用
Scrapy 框架命令分为两种,一种是全局命令,另一种是项目命令。全局命令顾名思义,就是在哪里都可以去使用,项目命令是只有在爬虫项目中才可使用的命令。全局命令和项目命令可以在命令行窗口使用 scrapy -h 来查看。
在爬虫中,我们常用的命令有:
scrapy startproject # 创建一个爬虫项目
scrapy genspider # 在项目下创建一个爬虫 spider 类
scrapy runspider # 运行一个 spider 类文件
scrapy crawl # 通过名称指定爬取信息
scrapy shell # 使用命令行与 scrapy 交互
scrapy list # 查看当前项目下有多少个爬虫
4. Scrapy 使用实战
(1) 首先使用 scrapy startproject scarpy_demo 命令创建一个名为 scarpy_demo 爬虫项目.
目录结构说明:
解析 respone 信息,并封装到 item中,再使用 Item Pipeline 管道对解析出来的 Item 数据进行清理、验证、去重、存储等操作。
开启 Item Pipeline 注释以及以 json 格式保存数据