爬虫基础与快速入门指南

今天给大家分享一下网络爬虫的基础知识,以及一些优秀的开源爬虫项目。网络爬虫主要是我们在面对新的任务,但自己又没有数据的时候,获取自己想要的数据的一种手段。因此我们有必要掌握一定的爬虫知识,从而更好的准备训练数据集。

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 还会担任一部分的逻辑操作。它的出现使得用户与网页信息之间不再只是一种冷冰冰的浏览与显示关系,而是实现了一种实时、动态、交互的页面功能。

在这里插入图片描述

2.URL

爬虫最主要的处理对象就是 URL,通过对 URL 的解析互取所需要的内容,然后再做进一步的处理。其格式由3部分组成:

(1) 协议,它告诉浏览器如何处理将要打开的文件。如大家常见的 http、https。

(2) 存有该资源的主机的IP地址(有时也包括端口号)

(3) 路径,一般来说不同部分之间以斜线(/)分隔。

2 爬虫基础概述

在了解了网页的一些基础知识之后,我们来继续学习一下爬虫的基础概念,以及 python 爬虫的一些库。我会首先介绍 robots.txt 文档,即 robots 协议,让大家合理、合法的进行网络爬虫。然后我们介绍 Requests 库,它可以帮助我们自动爬取 HTML 页面、自动网络请求提交 。接下来我们针对爬取回来的页面介绍数据解析库,如 lxml、re、beautifulsoup,它们可以很好地帮助我们解析 html 数据,并帮助我们提取信息。

1.robots.txt

robots.txt 即 robots 协议,存在于几乎每个网站的根目录,用来告诉我们此网站哪些数据是可以通过爬虫获取的,哪些内容是不应该被爬虫获取的。对于没有设定 robots 协议的网站,我们可以通过爬虫获取没有口令加密的数据,也就是可以获取该网站的全部数据。如果网站有 robots.txt 文档,我们就要判断是否禁止访客获取数据。

2.数据爬取

Python 拥有很多优秀的开源库,针对爬虫,python2 有 urllib1、2,python3 有自带的 urllib库。接下来我们以 python3(以下默认为 python )为例,介绍 urllib。

(1) urllib 介绍

Python urllib库官方文档链接:

https://docs.python.org/3/library/urllib.html
在这里插入图片描述

在这个页面中我们可以选择对应的 python 版本进行 urllib 库的学习。

(2) urllib 基础用法

urllib 中包括了四个模块,request 模块可以用来实现网页请求和响应获取;parse 模块用来解析和处理 URL;error 包含了对 request 模块产生异常的异常处理;robotparse 用来解析页面的robots.txt 文件。

在这里插入图片描述

从上面的代码我们可以看到,urllib.request 模块提供了最基本的构造 HTTP 请求方法,可以模拟浏览器的一个请求发起过程。同时它还带有处理 authenticaton(授权验证),redirections(重定向), cookies(浏览器 Cookies)以及其它内容。该函数会返回HTTPResposne类型的对象,使用response.read() 就可以得到返回的网页内容,再使用decode(“utf-8”)解码字符串,就可以获取网页。同时,我们还使用了正则表达表达式来提取数据,以获得我们想要的信息。

3.数据解析

我们通过上面的学习,了解了如何使用 urllib 进行数据爬取。但只对数据进行爬取是不足够的,所以我们要学习使用数据解析库,对爬取的数据进行数据解析。数据解析方面的库有:beautifulsoup4、lxml、re 等。接下来我们以 BeautifulSoup 为例,来看一下数据解析过程:
在这里插入图片描述

3 爬虫框架

通过上面的基本爬虫的简单学习,我们发现使用原始的爬虫存在着低效率、代码量大的缺点,一般只能用作小型项目的爬虫。接下来我们会介绍一个爬虫框架,我们现在有了基础爬虫的知识,所以这个框架我们可以快速的上手,实现中等规模的爬虫

1.Scrap 框架介绍

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 爬虫项目.
在这里插入图片描述

目录结构说明:
在这里插入图片描述

(2) cd scarpy_demo 进入项目目录,使用 scrapy genspider demo www.baidu.com 创建一个 spider 类文件

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

(3) 进入 items.py 创建自己的 Item 容器类

在这里插入图片描述

引用这个 ScrapyDemoItem 类,在 spider/demo.py 开头加上
在这里插入图片描述

解析 respone 信息,并封装到 item中,再使用 Item Pipeline 管道对解析出来的 Item 数据进行清理、验证、去重、存储等操作。

开启 Item Pipeline 注释以及以 json 格式保存数据

在这里插入图片描述

scrapy crawl demo -o json

4 开源项目推荐

1. 图片爬虫

当我们开始一个新任务的时候,可以用搜索引擎爬小批量的数据。

GitHub 地址:
https://github.com/sczhengyabin/Image-Downloader

特点:

(1) 图片种类丰富(所有类型)

(2) 爬取速度快(200张/分)

(3) 接口稳定且使用简单

但是爬取数量有限制,通常一个关键字不能超过2000张。

在这里插入图片描述

2. 视频爬虫

GitHub 地址:
https://github.com/iawia002/annie
在这里插入图片描述

annie [OPTIONS] URL [URL…]

3. 复杂爬虫

GitHub 地址:
https://github.com/chenusc11/flickr-crawler

(1) 注册 Flickr API Key

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

按照网页引导申请API Key。

在这里插入图片描述

(2) 调用接口

在这里插入图片描述

其中函数 flickr.photos_search() 可以获得大中小三种不同尺寸的图像,参数 tags 是我们的关键词。

photos=flickr.photos_search(tags=tags,tag_mode=‘all’,per_page=number)

以上就是本次爬虫分享的主要内容,更多请查看往期链接。

Python经验分享

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。(文末领读者福利
在这里插入图片描述
在这里插入图片描述

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利
在这里插入图片描述

五、Python练习题

检查学习结果。
在这里插入图片描述

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 (文末领取哦
在这里插入图片描述
在这里插入图片描述

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值