【杂谈】爬虫基础与快速入门指南

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)

(0)

相关推荐

  • Python爬虫常见面试题!

    众所周知,爬虫是Python重要的应用方向之一,也是学习Python求职的热门岗位.对此,为帮助学员们快速通过面试,小编整理了一些Python爬虫常见面试题,希望能够帮助到你们. 1. 试列出至少三种 ...

  • Python Urllib和urllib2哪个模块好?Python入门

    Python是一门高级的编程语言,它语法简单.清晰,容易入门,可用的包.库.模块有很多,即便是初学者也能够快速实现简单的网络爬虫,那么你知道Python中爬虫模块有哪些吗?我们一起来看看吧. Pyth ...

  • Crawler之Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息

    Crawler之Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息 输出结果 后期更新-- 实现代码 import scrapy class DmozSpider(scrapy ...

  • Python新手学习网络爬虫主要涉及哪些知识?

    爬虫,被称为网络机器人,现在爬虫在我们生活中具有非常重要,可以解决很多繁琐的过程,而python作为爬虫的首选语言,受到很多人的关注和喜欢.那么学习python做爬虫主要学习哪些内容呢?小编为大家介绍 ...

  • 快速入门指南到,教你超捷径轻松上手SMOOTH-Q3

    拿到新机「SMOOTH-Q3手机稳定器」不知道该从何下手?别烦恼,快速入门指南.按键介绍.模式介绍教程都为你准备好了.照着做,轻松玩转SMOOTH-Q3那都不是事. 1 快速入门指南 安装手机 / 调 ...

  • GitHub 热榜:C 快速入门指南!

    人工智能算法与Python大数据 致力于提供深度学习.机器学习.人工智能干货文章,为AI人员提供学习路线以及前沿资讯 23篇原创内容 公众号 点上方人工智能算法与Python大数据获取更多干货 在右上 ...

  • SPSSAU问卷分析快速入门指南

    首先了解基本统计知识(大约5分钟),接着选择正确的研究方法进行结果解读:与此同时,了解一些问卷研究的思路使得研究更加顺手.与此同时,掌握一些数据清理的技能更好,比如对异常数据处理. 01. 基础知识 ...

  • 五绝快速入门指南

    星园诗话  作者◇陈星   关于五绝,在没有很好掌握近体诗一般常识之前,最好不要轻易下笔.不懂诗的人喜欢写五绝,以为字少,简单,容易下手.其实,它才是最难写的. 五绝入门快,但要写好很不容易.五言绝句 ...

  • Intel Acceleration Stack快速入门指南: Intel FPGA Programmable Acceleration Card D5005

    sudo fpgasupdate $OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_3/bin/nlb_mode_3_unsigned.gbs 如果您需要在多卡系统中针对 ...

  • 你所不知道的wps中表格的秘密,让零基础你快速入门!

    获取更多业内资讯与深度好文 关注 现在我们的工作当中肯定少不了办公软件,有的人喜欢微软的Office,有的人选择金山的WPS,或者还有其他的,然而他们各有自己的特点.今天小编就来介绍一下WPS的表格的 ...

  • 产品新人到产品牛人,八分钟快速入门指南

    / 产品干货 / 产品经理工作必备:七大常用文档写法 110份产品需求文档(PRD)模板 150份超好用的简洁风PPT及简历模板 38个经典产品经理面试题回答思路 校招产品经理:52道经典面试问题解答 ...

  • 电子琴0基础学习快速入门,第一课:认识电子琴 适合智力正常的人

    电子琴0基础学习快速入门,第一课:认识电子琴 适合智力正常的人

  • 想进入新领域,零基础如何快速入门?

    我们处在一个新领域.新技术不断涌现的时代,你可能随时需要去接触一个全新领域的知识.比如今天抖音火了,5G来了,短视频变成了最流行的营销手段,那你就要学习短视频怎么制作.怎么分发:比如这两年有一些省份把 ...