精华内容
下载资源
问答
  • 爬虫核心技术

    2018-03-03 21:52:04
    关于爬虫核心原理,记录了爬虫的基本技术,pdf文档。来源于网络公开资源,如有侵权,请平台立即删除。
  • 技术维度:详细讲解了 Python 网络爬虫实现的核心技术,包括网络爬虫的工作原理、如何用 urllib 库编写网络爬虫爬虫的异常处理、正则表达式、爬虫中 Cookie 的使用、爬虫的浏览器伪装技术、定向爬取技术、反爬虫...

    内容简介

    本书从技术、工具与实战3个维度讲解了 Python 网络爬虫:

    • 技术维度:详细讲解了 Python 网络爬虫实现的核心技术,包括网络爬虫的工作原理、如何用 urllib 库编写网络爬虫、爬虫的异常处理、正则表达式、爬虫中 Cookie 的使用、爬虫的浏览器伪装技术、定向爬取技术、反爬虫技术,以及如何自己动手编写网络爬虫;

    • 工具维度:以流行的 Python 网络爬虫框架 Scrapy 为对象,详细讲解了 Scrapy 的功能使用、高级技巧、架构设计、实现原理,以及如何通过 Scrapy 来更便捷、高效地编写网络爬虫;

    • 实战维度:以实战为导向,是本书的主旨,除了完全通过手动编程实现网络爬虫和通过 Scrapy 框架实现网络爬虫的实战案例以外,本书还有博客爬取、图片爬取、模拟登录等多个综合性的网络爬虫实践案例。

    作者简介

    韦玮,资深网络爬虫技术专家、大数据专家和软件开发工程师,从事大型软件开发与技术服务多年,现任重庆韬翔网络科技有限公司创始人兼 CEO,国家专利发明人。

    精通 Python 技术,在 Python 网络爬虫、Python 机器学习、Python 数据分析与挖掘、Python Web 开发等多个领域都有丰富的实战经验。

    CSDN、51CTO、天善智能等科技类社区和媒体的特邀专家和讲师,输出了大量的高质量课程和文章,深受用户喜爱。

    微博:http://weibo.com/qiansyy

    本书内容

    前言

    为什么写这本书

    网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中。在搜索引擎中,主要使用通用网络爬虫对网页进行爬取及存储。

    随着大数据时代的到来,我们经常需要在海量数据的互联网环境中搜集一些特定的数据并对其进行分析,我们可以使用网络爬虫对这些特定的数据进行爬取,并对一些无关的数据进行过滤,将目标数据筛选出来。对特定的数据进行爬取的爬虫,我们将其称为聚焦网络爬虫。在大数据时代,聚焦网络爬虫的应用需求越来越大。

    目前在国内 Python 网络爬虫的书籍基本上都是从国外引进翻译的,国内的本版书籍屈指可数,故而我跟华章的副总编杨福川策划了这本书。本书的撰写过程中各方面的参考资料非常少,因此完成本书所花费的精力相对来说是非常大的。

    本书从系统化的视角,为那些想学习 Python 网络爬虫或者正在研究 Python 网络爬虫的朋友们提供了一个全面的参考,让读者可以系统地学习 Python 网络爬虫的方方面面,在理解并掌握了本书的实例之后,能够独立编写出自己的 Python 网络爬虫项目,并且能够胜任 Python 网络爬虫工程师相关岗位的工作。

    同时,本书的另一个目的是,希望可以给大数据或者数据挖掘方向的从业者一定的参考,以帮助这些读者从海量的互联网信息中爬取需要的数据。所谓巧妇难为无米之炊,有了这些数据之后,从事大数据或者数据挖掘方向工作的读者就可以进行后续的分析处理了。

    本书的主要内容和特色

    本书是一本系统介绍 Python 网络爬虫的书籍,全书注重实战,涵盖网络爬虫原理、如何手写 Python 网络爬虫、如何使用 Scrapy 框架编写网络爬虫项目等关于 Python 网络爬虫的方方面面。

    本书的主要特色如下:

    • 系统讲解 Python 网络爬虫的编写方法,体系清晰。

    • 结合实战,让读者能够从零开始掌握网络爬虫的基本原理,学会编写 Python 网络爬虫以及 Scrapy 爬虫项目,从而编写出通用爬虫及聚焦爬虫,并掌握常见网站的爬虫反屏蔽手段。

    • 有配套免费视频,对于书中的难点,读者可以直接观看作者录制的对应视频,加深理解。

    • 拥有多个爬虫项目编写案例,比如博客类爬虫项目案例、图片类爬虫项目案例、模拟登录爬虫项目等。除此之外,还有很多不同种类的爬虫案例,可以让大家在理解这些案例之后学会各种类型爬虫的编写方法。

    总之,在理解本书内容并掌握书中实例之后,读者将能胜任 Python 网络爬虫工程师方向的工作并学会各种类型网络爬虫项目的编写。此外,本书对于大数据或数据挖掘方向的从业者也非常有帮助,比如可以利用 Python 网络爬虫轻松获取所需的数据信息等。

    本书面向的读者

    • Python 网络爬虫初学者

    • 网络爬虫工程师

    • 大数据及数据挖掘工程师

    • 高校计算机专业的学生

    • 其他对 Python 或网络爬虫感兴趣的人员

    如何阅读本书

    本书分为四篇,共计20章。

    第一篇为理论基础篇(第1~2章),主要介绍了网络爬虫的基础知识,让大家从零开始对网络爬虫有一个比较清晰的认识。

    第二篇为核心技术篇(第3~9章),详细介绍了网络爬虫实现的核心技术,包括网络爬虫的工作原理、如何用 Urllib 库编写网络爬虫、爬虫的异常处理、正则表达式、爬虫中 Cookie 的使用、手写糗事百科爬虫、手写链接爬虫、手写微信爬虫、手写多线程爬虫、浏览器伪装技术、Python 网络爬虫的定向爬取技术及实例等。学完这一部分内容,读者就可以写出自己的爬虫了。这部分的爬虫编写采用的是一步步纯手写的方式进行的,没有采用框架。

    第三篇为框架实现篇(第10~17章),主要详细介绍了如何用框架实现 Python 网络爬虫项目。使用框架实现 Python 网络爬虫项目相较于手写方式更加便捷,主要包括 Python 爬虫框架分类、Scrapy 框架在各系统中的安装以及如何避免各种“坑”、如何用 Scrapy 框架编写爬虫项目、Scrapy 框架架构详解、Scrapy 的中文输出与存储、在 Scrapy 中如何使用 for 循环实现自动网页爬虫、如何通过 CrawlSpider 实现自动网页爬虫、如何将爬取的内容写进数据库等。其中第12章为基础部分,读者需要着重掌握。

    第四篇为项目实战篇(第18~20章),分别讲述了博客类爬虫项目、图片类爬虫项目、模拟登录爬虫项目的编程及实现。其中,也会涉及验证码处理等方面的难点知识,帮助读者通过实际的项目掌握网络爬虫项目的编写。

    勘误和支持

    由于作者的水平有限,书中难免有一些错误或不准确的地方,恳请各位读者不吝指正。

    相关建议各位可以通过微博@韦玮pig 或通过 QQ 公众号 a67899 或微信公众平台 weijc7789(可以直接扫描下方二维码添加)进行反馈,也可以直接向邮箱 ceo@iqianyue.com 发送邮件,期待能够收到各位读者的意见和建议,欢迎来信。

    扫描关注 QQ 公众号

    扫描关注微信公众号

    致谢

    感谢机械工业出版社华章公司的副总编杨福川老师与编辑李艺老师,在近一年的时间里,是你们一次次在我遇到困难的时候,给予我鼓励,让我可以坚持写下去。创作一本图书是非常艰苦的,除了技术知识等因素之外,还需要非常大的毅力。特别感谢杨福川在写作过程中对我各方面的支持,尤其是对我毅力的培养。

    感谢 CSDN、51CTO 与极客学院,因为你们,让我在这个领域获得了更多的学员与支持。

    感谢恩师何云景教授对我创业方面的帮助,因为有您,我才拥有了一个更好的创业开端及工作环境。

    特别致谢

    最后,需要特别感谢的是我的女友,因为编写这本书,少了很多陪你的时间,感谢你的不离不弃与理解包容。希望未来可以加倍弥补你那些错过吃的美食和那些错过逛的街道。

    同时,也要感谢你帮我完成书稿的校对工作,谢谢你的付出与支持。因为有了你默默的付出,我才能坚定地走下去;因为有了你不断的支持,我才可以安心地往前冲。

    感谢爷爷从小对我人生观、价值观的培养,您是一个非常有思想的人。

    感谢远方的父母、叔叔、姐姐,那些亲情的陪伴是我最珍贵的财富。

    谨以此书献给热爱 Python 的朋友们!

    第一篇 理论基础篇
    • 第1章 什么是网络爬虫

    • 第2章 网络爬虫技能总览

    网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。此时,我们可以使用网络爬虫对数据信息进行自动采集,比如应用于搜索引擎中对站点进行爬取收录,应用于数据分析与挖掘中对数据进行采集,应用于金融分析中对金融数据进行采集,除此之外,还可以将网络爬虫应用于舆情监测与分析、目标客户数据的收集等各个领域。当然,要学习网络爬虫开发,首先需要认识网络爬虫,在本篇中,我们将带领大家一起认识几种典型的网络爬虫,并了解网络爬虫的各项常见功能。

    第1章 什么是网络爬虫

    随着大数据时代的来临,网络爬虫在互联网中的地位将越来越重要。互联网中的数据是海量的,如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题而生的。我们感兴趣的信息分为不同的类型:如果只是做搜索引擎,那么感兴趣的信息就是互联网中尽可能多的高质量网页;如果要获取某一垂直领域的数据或者有明确的检索需求,那么感兴趣的信息就是根据我们的检索和需求所定位的这些信息,此时,需要过滤掉一些无用信息。前者我们称为通用网络爬虫,后者我们称为聚焦网络爬虫。

    1.1 初识网络爬虫

    网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则我们称之为网络爬虫算法。使用 Python 可以很方便地编写出爬虫程序,进行互联网信息的自动化检索。

    搜索引擎离不开爬虫,比如百度搜索引擎的爬虫叫作百度蜘蛛(Baiduspider)。百度蜘蛛每天会在海量的互联网信息中进行爬取,爬取优质信息并收录,当用户在百度搜索引擎上检索对应关键词时,百度将对关键词进行分析处理,从收录的网页中找出相关网页,按照一定的排名规则进行排序并将结果展现给用户。在这个过程中,百度蜘蛛起到了至关重要的作用。那么,如何覆盖互联网中更多的优质网页?又如何筛选这些重复的页面?这些都是由百度蜘蛛爬虫的算法决定的。采用不同的算法,爬虫的运行效率会不同,爬取结果也会有所差异。所以,我们在研究爬虫的时候,不仅要了解爬虫如何实现,还需要知道一些常见爬虫的算法,如果有必要,我们还需要自己去制定相应的算法,这些在后面都会为大家详细地讲解,在此,我们仅需要对爬虫的概念有一个基本的了解。

    除了百度搜索引擎离不开爬虫以外,其他搜索引擎也离不开爬虫,它们也拥有自己的爬虫。比如360的爬虫叫 360Spider,搜狗的爬虫叫 Sogouspider,必应的爬虫叫 Bingbot。

    如果想自己实现一款小型的搜索引擎,我们也可以编写出自己的爬虫去实现,当然,虽然可能在性能或者算法上比不上主流的搜索引擎,但是个性化的程度会非常高,并且也有利于我们更深层次地理解搜索引擎内部的工作原理。

    大数据时代也离不开爬虫,比如在进行大数据分析或数据挖掘时,我们可以去一些比较大型的官方站点下载数据源。但这些数据源比较有限,那么如何才能获取更多更高质量的数据源呢?此时,我们可以编写自己的爬虫程序,从互联网中进行数据信息的获取。所以在未来,爬虫的地位会越来越重要。

    1.2 为什么要学网络爬虫

    在上一节中,我们初步认识了网络爬虫,但是为什么要学习网络爬虫呢?要知道,只有清晰地知道我们的学习目的,才能够更好地学习这一项知识,所以在这一节中,我们将会为大家分析一下学习网络爬虫的原因。

    当然,不同的人学习爬虫,可能目的有所不同,在此,我们总结了4种常见的学习爬虫的原因。

    1)学习爬虫,可以私人订制一个搜索引擎,并且可以对搜索引擎的数据采集工作原理进行更深层次地理解。

    有的朋友希望能够深层次地了解搜索引擎的爬虫工作原理,或者希望自己能够开发出一款私人搜索引擎,那么此时,学习爬虫是非常有必要的。简单来说,我们学会了爬虫编写之后,就可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在采集回来的信息中进行检索,即实现了私人的搜索引擎。当然,信息怎么爬取、怎么存储、怎么进行分词、怎么进行相关性计算等,都是需要我们进行设计的,爬虫技术主要解决信息爬取的问题。

    2)大数据时代,要进行数据分析,首先要有数据源,而学习爬虫,可以让我们获取更多的数据源,并且这些数据源可以按我们的目的进行采集,去掉很多无关数据。

    在进行大数据分析或者进行数据挖掘的时候,数据源可以从某些提供数据统计的网站获得,也可以从某些文献或内部资料中获得,但是这些获得数据的方式,有时很难满足我们对数据的需求,而手动从互联网中去寻找这些数据,则耗费的精力过大。此时就可以利用爬虫技术,自动地从互联网中获取我们感兴趣的数据内容,并将这些数据内容爬取回来,作为我们的数据源,从而进行更深层次的数据分析,并获得更多有价值的信息。

    3)对于很多 SEO 从业者来说,学习爬虫,可以更深层次地理解搜索引擎爬虫的工作原理,从而可以更好地进行搜索引擎优化。

    既然是搜索引擎优化,那么就必须要对搜索引擎的工作原理非常清楚,同时也需要掌握搜索引擎爬虫的工作原理,这样在进行搜索引擎优化时,才能知己知彼,百战不殆。

    4)从就业的角度来说,爬虫工程师目前来说属于紧缺人才,并且薪资待遇普遍较高,所以,深层次地掌握这门技术,对于就业来说,是非常有利的。

    有些朋友学习爬虫可能为了就业或者跳槽。从这个角度来说,爬虫工程师方向是不错的选择之一,因为目前爬虫工程师的需求越来越大,而能够胜任这方面岗位的人员较少,所以属于一个比较紧缺的职业方向,并且随着大数据时代的来临,爬虫技术的应用将越来越广泛,在未来会拥有很好的发展空间。

    除了以上为大家总结的4种常见的学习爬虫的原因外,可能你还有一些其他学习爬虫的原因,总之,不管是什么原因,理清自己学习的目的,就可以更好地去研究一门知识技术,并坚持下来。

    1.3 网络爬虫的组成

    接下来,我们将介绍网络爬虫的组成。网络爬虫由控制节点、爬虫节点、资源库构成。

    图1-1所示是网络爬虫的控制节点和爬虫节点的结构关系。

    图1-1 网络爬虫的控制节点和爬虫节点的结构关系

    可以看到,网络爬虫中可以有多个控制节点,每个控制节点下可以有多个爬虫节点,控制节点之间可以互相通信,同时,控制节点和其下的各爬虫节点之间也可以进行互相通信,属于同一个控制节点下的各爬虫节点间,亦可以互相通信。

    控制节点,也叫作爬虫的中央控制器,主要负责根据 URL 地址分配线程,并调用爬虫节点进行具体的爬行。

    爬虫节点会按照相关的算法,对网页进行具体的爬行,主要包括下载网页以及对网页的文本进行处理,爬行后,会将对应的爬行结果存储到对应的资源库中。

    1.4 网络爬虫的类型

    现在我们已经基本了解了网络爬虫的组成,那么网络爬虫具体有哪些类型呢?

    网络爬虫按照实现的技术和结构可以分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫等类型。在实际的网络爬虫中,通常是这几类爬虫的组合体。

    首先我们为大家介绍通用网络爬虫(General Purpose Web Crawler)。通用网络爬虫又叫作全网爬虫,顾名思义,通用网络爬虫爬取的目标资源在全互联网中。通用网络爬虫所爬取的目标数据是巨大的,并且爬行的范围也是非常大的,正是由于其爬取的数据是海量数据,故而对于这类爬虫来说,其爬取的性能要求是非常高的。这种网络爬虫主要应用于大型搜索引擎中,有非常高的应用价值。

    通用网络爬虫主要由初始 URL 集合、URL 队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块等构成。通用网络爬虫在爬行的时候会采取一定的爬行策略,主要有深度优先爬行策略和广度优先爬行策略。具体的爬行策略,我们将在第3章讲解,在此,我们只需要知道通用网络爬虫的基本构成和主要的爬行策略。

    聚焦网络爬虫(Focused Crawler)也叫主题网络爬虫,顾名思义,聚焦网络爬虫是按照预先定义好的主题有选择地进行网页爬取的一种爬虫,聚焦网络爬虫不像通用网络爬虫一样将目标资源定位在全互联网中,而是将爬取的目标网页定位在与主题相关的页面中,此时,可以大大节省爬虫爬取时所需的带宽资源和服务器资源。聚焦网络爬虫主要应用在对特定信息的爬取中,主要为某一类特定的人群提供服务。

    聚焦网络爬虫主要由初始 URL 集合、URL 队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块、内容评价模块、链接评价模块等构成。内容评价模块可以评价内容的重要性,同理,链接评价模块也可以评价出链接的重要性,然后根据链接和内容的重要性,可以确定哪些页面优先访问。聚焦网络爬虫的爬行策略主要有4种,即基于内容评价的爬行策略、基于链接评价的爬行策略、基于增强学习的爬行策略和基于语境图的爬行策略。关于聚焦网络爬虫具体的爬行策略,我们将在1.5节进行详细分析。

    增量式网络爬虫(Incremental Web Crawler),所谓增量式,对应着增量式更新。增量式更新指的是在更新的时候只更新改变的地方,而未改变的地方则不更新,所以增量式网络爬虫,在爬取网页的时候,只爬取内容发生变化的网页或者新产生的网页,对于未发生内容变化的网页,则不会爬取。增量式网络爬虫在一定程度上能够保证所爬取的页面,尽可能是新页面。

    深层网络爬虫(Deep Web Crawler),可以爬取互联网中的深层页面,在此我们首先需要了解深层页面的概念。

    在互联网中,网页按存在方式分类,可以分为表层页面和深层页面。所谓的表层页面,指的是不需要提交表单,使用静态的链接就能够到达的静态页面;而深层页面则隐藏在表单后面,不能通过静态链接直接获取,是需要提交一定的关键词之后才能够获取得到的页面。在互联网中,深层页面的数量往往比表层页面的数量要多很多,故而,我们需要想办法爬取深层页面。

    爬取深层页面,需要想办法自动填写好对应表单,所以,深层网络爬虫最重要的部分即为表单填写部分。

    深层网络爬虫主要由 URL 列表、LVS 列表(LVS 指的是标签/数值集合,即填充表单的数据源)、爬行控制器、解析器、LVS 控制器、表单分析器、表单处理器、响应分析器等部分构成。

    深层网络爬虫表单的填写有两种类型:第一种是基于领域知识的表单填写,简单来说就是建立一个填写表单的关键词库,在需要填写的时候,根据语义分析选择对应的关键词进行填写;第二种是基于网页结构分析的表单填写,简单来说,这种填写方式一般是领域知识有限的情况下使用,这种方式会根据网页结构进行分析,并自动地进行表单填写。

    以上,为大家介绍了网络爬虫中常见的几种类型,希望读者能够对网络爬虫的分类有一个基本的了解。

    1.5 爬虫扩展——聚焦爬虫

    由于聚焦爬虫可以按对应的主题有目的地进行爬取,并且可以节省大量的服务器资源和带宽资源,具有很强的实用性,所以在此,我们将对聚焦爬虫进行详细讲解。图1-2所示为聚焦爬虫运行的流程,熟悉该流程后,我们可以更清晰地知道聚焦爬虫的工作原理和过程。

    首先,聚焦爬虫拥有一个控制中心,该控制中心负责对整个爬虫系统进行管理和监控,主要包括控制用户交互、初始化爬行器、确定主题、协调各模块之间的工作、控制爬行过程等方面。

    然后,将初始的 URL 集合传递给 URL 队列,页面爬行模块会从 URL 队列中读取第一批 URL 列表,然后根据这些 URL 地址从互联网中进行相应的页面爬取。爬取后,将爬取到的内容传到页面数据库中存储,同时,在爬行过程中,会爬取到一些新的 URL,此时,需要根据我们所定的主题使用链接过滤模块过滤掉无关链接,再将剩下来的 URL 链接根据主题使用链接评价模块或内容评价模块进行优先级的排序。完成后,将新的 URL 地址传递到 URL 队列中,供页面爬行模块使用。另一方面,将页面爬取并存放到页面数据库后,需要根据主题使用页面分析模块对爬取到的页面进行页面分析处理,并根据处理结果建立索引数据库,用户检索对应信息时,可以从索引数据库中进行相应的检索,并得到对应的结果。

    图1-2 聚焦爬虫运行的流程

    这就是聚焦爬虫的主要工作流程,了解聚焦爬虫的主要工作流程有助于我们编写聚焦爬虫,使编写的思路更加清晰。

    1.6 小结

    1)网络爬虫也叫作网络蜘蛛、网络蚂蚁、网络机器人等,可以自动地浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则去浏览,这些规则我们将其称为网络爬虫算法。使用 Python 可以很方便地编写出爬虫程序,进行互联网信息的自动化检索。

    2)学习爬虫,可以:①私人订制一个搜索引擎,并且可以对搜索引擎的数据采集工作原理,进行更深层次地理解;②为大数据分析提供更多高质量的数据源;③更好地研究搜索引擎优化;④解决就业或跳槽的问题。

    3)网络爬虫由控制节点、爬虫节点、资源库构成。

    4)网络爬虫按照实现的技术和结构可以分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫等类型。在实际的网络爬虫中,通常是这几类爬虫的组合体。

    5)聚焦网络爬虫主要由初始 URL 集合、URL 队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块、内容评价模块、链接评价模块等构成。

    第2章 网络爬虫技能总览
    第二篇 核心技术篇
    第3章 网络爬虫实现原理与实现技术(上)
    第3章 网络爬虫实现原理与实现技术(下)
    第4章 Urllib 库与 URLError 异常处理(上)
    第4章 Urllib 库与 URLError 异常处理(下)
    第5章 正则表达式与 Cookie 的使用(上)
    第5章 正则表达式与 Cookie 的使用(下)
    第6章 手写 Python 爬虫(上)
    第6章 手写 Python 爬虫(下)
    第7章 学会使用 Fiddler (上)
    第7章 学会使用 Fiddler (下)
    第8章 爬虫的浏览器伪装技术
    第9章 爬虫的定向爬取技术
    第三篇 框架实现篇
    第10章 了解 Python 爬虫框架
    第11章 爬虫利器——Scrapy 安装与配置
    第12章 开启 Scrapy 爬虫项目之旅(上)
    第12章 开启 Scrapy 爬虫项目之旅(中)
    第12章 开启 Scrapy 爬虫项目之旅(下)
    第13章 Scrapy 核心架构
    第14章 Scrapy 中文输出与存储
    第15章 编写自动爬取网页的爬虫
    第16章 CrawlSpider
    第17章 Scrapy 高级应用
    第四篇 项目实战篇
    第18章 博客类爬虫项目
    第19章 图片类爬虫项目
    第20章 模拟登录爬虫项目

    阅读全文: http://gitbook.cn/gitchat/geekbook/5b7103e3dcc9492d208237a8

    展开全文
  • 第 一 章:解析python网络爬虫核心技术、Scrapy框架、分布式爬虫 1-1 初识爬虫 1-1-1 1.1-爬虫产生背景 1-1-2 1.2-什么是网络爬虫 1-1-3 1.3-爬虫的用途 1-1-4 1.4-爬虫分类 1-2 爬虫的实现原理和技术 1-2-1 2.1-...

    BXG-2018-5  8.95GB 高清视频
    第 一 章:解析python网络爬虫:核心技术、Scrapy框架、分布式爬虫
    1-1 初识爬虫
    1-1-1 1.1-爬虫产生背景
    1-1-2 1.2-什么是网络爬虫
    1-1-3 1.3-爬虫的用途
    1-1-4 1.4-爬虫分类
    1-2 爬虫的实现原理和技术
    1-2-1 2.1-通用爬虫的工作原理
    1-2-2 2.2-聚焦爬虫工作流程
    1-2-3 2.3-通用爬虫抓取网页的详细流程
    1-2-4 2.4-通用爬虫网页分类
    1-2-5 2.5-robots.txt文件
    1-2-6 2.6-sitemap.xml文件
    1-2-7 2.7-反爬应对策略
    1-2-8 2.8-为什么选择Python作为爬虫开发语言

    1-3 网页请求原理
    1-3-1 3.1_浏览网页的过程
    1-3-2 3.2_统一资源定位符URL
    1-3-3 3.3_计算机域名系统DNS
    1-3-4 3.4_浏览器显示完整页面的过程
    1-3-5 3.5_Fiddler工作原理_备份
    1-3-6 3.5_客户端HTTP请求的格式
    1-3-7 3.6_服务端HTTP响应格式
    1-3-8 3.7_Fillder代理服务的工作原理
    1-3-9 3.8_fidder的下载与安装
    1-3-10 3.9_Fiddle界面详解
    1-3-11 3.10_Fiddler_https配置
    1-3-12 3.11_使用Fiddler捕获Chrome的会话

    1-4 抓取网页数据
    1-4-1 4.1_什么是urllib库
    1-4-2 4.2_快速抓取一个网页
    1-4-3 4.3_分析urlopen方法
    1-4-4 4.4_HTTPResponse对象的使用
    1-4-5 4.5_构造Request对象
    1-4-6 4.6_URL编码转换
    1-4-7 4.7_处理GET请求
    1-4-8 4.8_处理POST请求
    1-4-9 4.9_添加特定Headers—请求伪装
    1-4-10 4.10_简单的自定义opener
    1-4-11 4.11_设置代理服务器
    1-4-12 4.12_超时设置
    1-4-13 4.13_URLError异常和捕获
    1-4-14 4.14_HttpError异常和捕获
    1-4-15 4.15_什么是requests库
    1-4-16 4.16_requests库发送请求
    1-4-17 4.17_requests库返回响应

    1-5 数据解析
    1-5-1 5.1_网页数据格式
    1-5-2 5.2_查看网页结构
    1-5-3 5.3_数据解析技术
    1-5-4 5.4_正则表达式备份
    1-5-5 5.5_什么是Xpath备分
    1-5-6 5.6_XPath开发工具
    1-5-7 5.7_XPath语法
    1-5-8 5.8_什么是lxml库
    1-5-9 5.9_lxml的基本使用
    1-5-10 5.10_什么是BeautifulSoup
    1-5-11 5.11_构建BeautifulSoup对象
    1-5-12 5.12_通过操作方法进行解读搜索
    1-5-13 5.13_通过CSS选择器进行搜索
    1-5-14 5.14_什么是JSON0 
    1-5-15 5.15_JSON与XML语言比较
    1-5-16 5.16_json模块介绍
    1-5-17 5.17_json模块基本使用
    1-5-18 5.18_jsonpath介绍
    1-5-19 5.19_JSONPath与XPath语法对比

    1-6 并发下载
    1-6-1 6.1_多线程爬虫流程分析
    1-6-2 6.2_queue(队列)模块简介
    1-6-3 6.3_Queue类简介
    1-6-4 6.4_协程爬虫的流程分析
    1-6-5 6.5_第三方库gevent

    1-7 抓取动态内容
    1-7-1 7.1_动态网页介绍
    1-7-2 7.2_selenium和PhantomJS概述
    1-7-3 7.3_selenium_PhantomJS安装配置
    1-7-4 7.4_入门操作
    1-7-5 7.5_定位页面元素
    1-7-6 7.6_鼠标动作链
    1-7-7 7.7_填充表单
    1-7-8 7.8_弹窗处理
    1-7-9 7.9_弹窗处理
    1-7-10 7.10_页面的前进和后退
    1-7-11 7.11_获取页面Cookies
    1-7-12 7.12_页面等待

    1-8 图像识别与文字处理
    1-8-1 8.1_OCR技术简介
    1-8-2 8.2_tesseract下载与安装
    1-8-3 8.3_tesseract下载与安装
    1-8-4 8.4_PIL库简介
    1-8-5 8.5_读取图像中格式规范的文字
    1-8-6 8.6_对图片进行阈值过滤和降噪处理
    1-8-7 8.7_识别图像的中文字符
    1-8-8 8.8_验证码分类
    1-8-9 8.9_简单识别图形验证码

    1-9 存储爬虫数据  
    1-9-1 9.1_数据存储简介
    1-9-2 9.2_什么是MongoDB
    1-9-3 9.3_Windows平台安装MongoDB数据库
    1-9-4 9.4_比较MongoDB和MySQL的术语
    1-9-5 9.5_什么是PyMongo
    1-9-6 9.6_PyMongo的基本操作
    8 P1 c; n, `" Y/ v# @
    1-10 初识爬虫框架Scrapy
    1-10-1 10.1_常见爬虫框架介绍
    1-10-2 10.2_Scrapy框架的架构
    1-10-3 10.3_Scrapy框架的运作流程
    1-10-4 10.4_安装Scrapy框架
    1-10-5 10.5_新建一个Scrapy项目
    1-10-6 10.6_明确抓取目标
    1-10-7 10.7_制作Spiders爬取网页
    1-10-8 10.8_永久性存储数据

    1-11 Scrapy终端与核心组件
    1-11-1 11.1_启用Scrapy shell
    1-11-2 11.2_使用Scrapy shell
    1-11-3 11.3_Spiders—抓取和提取结构化数据
    1-11-4 11.4_自定义Item Pipeline
    1-11-5 11.5_Downloader Middlewares—防止反爬虫
    1-11-6 11.6_Settings—定制Scrapy组件

    1-12 自动抓取网页的爬虫CrawlSpider
    1-12-1 12.1_初识爬虫类CrawlSpider
    1-12-2 12.2_CrawlSpider类的工作原理
    1-12-3 12.3_通过Rule类决定爬取规则
    1-12-4 12.4_通过LinkExtractor类提取链接

    1-13 Scrapy-Redis分布式爬虫
    1-13-1 13.1_Scrapy-Redis简介
    1-13-2 13.2_Scrapy-Redis的完整架构
    1-13-3 13.3_Scrapy-Redis的运作流程
    1-13-4 13.4_Scrapy-Redis的主要组件
    1-13-5 13.5_安装Scrapy-Redis
    1-13-6 13.6_安装和启动Redis数据库
    1-13-7 13.7_修改配置文件 redis.conf
    1-13-8 13.8_分布式策略
    1-13-9 13.9_测试Slave端远程连接Master端
    1-13-10 13.10_创建Scrapy项目和设置Scrapy-Redis组件
    1-13-11 13.11_明确抓取目标
    1-13-12 13.12_制作Spider爬取网页
    1-13-13 13.13_执行分布式爬虫
    1-13-14 13.14_使用多个管道存储
    1-13-15 13.15_处理Redis数据库里的数据

    展开全文
  • 精通Python网络爬虫_核心技术框架与项目实战_韦玮 编辑推荐  从技术、工具、实战3个维度讲透Python网络爬虫各项核心技术和主流框架,深度讲解网络爬虫的抓取技术与反爬攻关技巧 内容简介 随着大数据时代的到来,...

    精通Python网络爬虫_核心技术框架与项目实战_韦玮

    编辑推荐
      从技术、工具、实战3个维度讲透Python网络爬虫各项核心技术和主流框架,深度讲解网络爬虫的抓取技术与反爬攻关技巧
    内容简介
    随着大数据时代的到来,我们经常需要在海量数据的互联网环境中搜集一些特定的数据并对其进行分析,我们可以使用网络爬虫对这些特定的数据进行爬取,并对一些无关的数据进行过滤,将目标数据筛选出来。对特定的数据进行爬取的爬虫,我们将其称为聚焦网络爬虫。在大数据时代,聚焦网络爬虫的应用需求越来越大。本书从系统化的视角,为那些想学习Python网络爬虫或者正在研究Python网络爬虫的朋友们提供了一个全面的参考,让读者可以系统地学习Python网络爬虫的方方面面,在理解并掌握了本书的实例之后,能够独立编写出自己的Python网络爬虫项目,并且能够胜任Python网络爬虫工程师相关岗位的工作。

    目录案例

    版权信息
    前言
    第一篇 理论基础篇
    第1章 什么是网络爬虫
    1.1 初识网络爬虫
    1.2 为什么要学网络爬虫
    1.3 网络爬虫的组成
    1.4 网络爬虫的类型
    1.5 爬虫扩展——聚焦爬虫
    1.6 小结
    第2章 网络爬虫技能总览
    2.1 网络爬虫技能总览图
    2.2 搜索引擎核心
    2.3 用户爬虫的那些事儿
    2.4 小结
    第二篇 核心技术篇
    第3章 网络爬虫实现原理与实现技术
    3.1 网络爬虫实现原理详解
    3.2 爬行策略
    3.3 网页更新策略
    3.4 网页分析算法
    3.5 身份识别
    3.6 网络爬虫实现技术
    3.7 实例——metaseeker
    3.8 小结
    第4章 Urllib库与URLError异常处理
    4.1 什么是Urllib库
    4.2 快速使用Urllib爬取网页
    4.3 浏览器的模拟——Headers属性
    4.4 超时设置
    4.5 HTTP协议请求实战
    4.6 代理服务器的设置
    4.7 DebugLog实战
    4.8 异常处理神器——URLError实战
    4.9 小结
    第5章 正则表达式与Cookie的使用
    5.1 什么是正则表达式
    5.2 正则表达式基础知识
    5.3 正则表达式常见函数
    5.4 常见实例解析
    5.5 什么是Cookie
    5.6 Cookiejar实战精析
    5.7 小结
    第6章 手写Python爬虫
    6.1 图片爬虫实战
    6.2 链接爬虫实战
    6.3 糗事百科爬虫实战
    6.4 微信爬虫实战
    6.5 什么是多线程爬虫
    6.6 多线程爬虫实战
    6.7 小结
    第7章 学会使用Fiddler
    7.1 什么是Fiddler
    7.2 爬虫与Fiddler的关系
    7.3 Fiddler的基本原理与基本界面
    7.4 Fiddler捕获会话功能
    7.5 使用QuickExec命令行
    7.6 Fiddler断点功能
    7.7 Fiddler会话查找功能
    7.8 Fiddler的其他功能
    7.9 小结
    第8章 爬虫的浏览器伪装技术
    8.1 什么是浏览器伪装技术
    8.2 浏览器伪装技术准备工作
    8.3 爬虫的浏览器伪装技术实战
    8.4 小结
    第9章 爬虫的定向爬取技术
    9.1 什么是爬虫的定向爬取技术
    9.2 定向爬取的相关步骤与策略
    9.3 定向爬取实战
    9.4 小结
    第三篇 框架实现篇
    第10章 了解Python爬虫框架
    10.1 什么是Python爬虫框架
    10.2 常见的Python爬虫框架
    10.3 认识Scrapy框架
    10.4 认识Crawley框架
    10.5 认识Portia框架
    10.6 认识newspaper框架
    10.7 认识Python-goose框架
    10.8 小结
    第11章 爬虫利器——Scrapy安装与配置
    11.1 在Windows7下安装及配置Scrapy实战详解
    11.2 在Linux(Centos)下安装及配置Scrapy实战详解
    11.3 在MAC下安装及配置Scrapy实战详解
    11.4 小结
    第12章 开启Scrapy爬虫项目之旅
    12.1 认识Scrapy项目的目录结构
    12.2 用Scrapy进行爬虫项目管理
    12.3 常用工具命令
    12.4 实战:Items的编写
    12.5 实战:Spider的编写
    12.6 XPath基础
    12.7 Spider类参数传递
    12.8 用XMLFeedSpider来分析XML源
    12.9 学会使用CSVFeedSpider
    12.10 Scrapy爬虫多开技能
    12.11 避免被禁止
    12.12 小结
    第13章 Scrapy核心架构
    13.1 初识Scrapy架构
    13.2 常用的Scrapy组件详解
    13.3 Scrapy工作流
    13.4 小结
    第14章 Scrapy中文输出与存储
    14.1 Scrapy的中文输出
    14.2 Scrapy的中文存储
    14.3 输出中文到JSON文件
    14.4 小结
    第15章 编写自动爬取网页的爬虫
    15.1 实战:items的编写
    15.2 实战:pipelines的编写
    15.3 实战:settings的编写
    15.4 自动爬虫编写实战
    15.5 调试与运行
    15.6 小结
    第16章 CrawlSpider
    16.1 初识CrawlSpider
    16.2 链接提取器
    16.3 实战:CrawlSpider实例
    16.4 小结
    第17章 Scrapy高级应用
    17.1 如何在Python3中操作数据库
    17.2 爬取内容写进MySQL
    17.3 小结
    第四篇 项目实战篇
    第18章 博客类爬虫项目
    18.1 博客类爬虫项目功能分析
    18.2 博客类爬虫项目实现思路
    18.3 博客类爬虫项目编写实战
    18.4 调试与运行
    18.5 小结
    第19章 图片类爬虫项目
    19.1 图片类爬虫项目功能分析
    19.2 图片类爬虫项目实现思路
    19.3 图片类爬虫项目编写实战
    19.4 调试与运行
    19.5 小结
    第20章 模拟登录爬虫项目
    20.1 模拟登录爬虫项目功能分析
    20.2 模拟登录爬虫项目实现思路
    20.3 模拟登录爬虫项目编写实战
    20.4 调试与运行
    20.5 小结

    下载地址:
    精通Python网络爬虫_核心技术框架与项目实战_韦玮

    其它资料

    展开全文
  • 第3章 网络爬虫实现原理与实现技术3.1 实现原理 这里主要讲通用网络爬虫和聚焦网络爬虫。 具体操作见图示。 1. 通用网络爬虫 2. 聚焦网络爬虫 聚焦网络爬虫,是有目的的进行爬取。 必须增加目标的定义和过滤...

    第3章 网络爬虫实现原理与实现技术

    3.1 实现原理

    这里主要讲通用网络爬虫和聚焦网络爬虫。
    具体操作见图示。

    1. 通用网络爬虫
    这里写图片描述

    2. 聚焦网络爬虫
    这里写图片描述

    聚焦网络爬虫,是有目的的进行爬取。
    必须增加目标的定义和过滤机制。
    其执行原理和过程需要比通用网络爬虫多出三步,即目标的定义、过滤无关链接、下一步要爬取的 URL 地址的选取等。

    3.2 爬行策略

    这里写图片描述

    爬行策略具体说明
    深度优先爬行策略A-D-E-B-C-F-G
    广度优先爬行策略A-B-C-D-E-F-G
    大站优先策略优先爬取大站(网页数量多的网站)中的 URL 地址
    反链策略优先爬取反链数量(被其他网页指向的次数)多的网站
    其他爬行策略如 OPIC 策略、Partial 策略、PageRank 策略等

    3.3 网站更新策略

    目的:在合适时间重新爬取更新的网页。

    更新策略具体说明
    用户体验策略大部分用户只关注排名靠前的网页,爬虫优先更新排名结果靠前的网页
    历史数据策略依据网页历史更新数据,利用数学建模,预测下一次更新时间,从而确定更新周期
    聚类分析策略一般具有类似属性的网页更新频率类似–>对海量网页进行聚类分析,形成多个类–>对同一个类抽样,取平均值更新–>从而确定爬行频率

    聚类分析算法的网页更新图示

    这里写图片描述

    3.4 网站分析算法

    在搜索引擎中,爬虫爬取了对应的网页后,会将网页存储到服务器的原始数据库中,之后,搜索引擎会对这些网页进行分析并确定各网页的重要性,即会影响用户检索的排名结果。

    网页分析算法具体说明
    基于用户行为基于用户访问行为(如访问频率、时长等)
    基于网络拓扑(如PageRank,谷歌引擎核心算法)依靠网页间链接关系计算权重,进行排名
    基于网页内容依据网页数据、文本网页内容特征等

    3.5 身份识别

    正规爬虫会告诉对应网页网站站长其爬虫身份,这就是身份识别过程。
    Robots协议——网络爬虫共同遵守的协议。
    确定网页爬取范围等。

    3.6 网络爬虫实现技术

    实现语言特点
    Python框架丰富,多线程能力强,简单粗暴
    Java适合开发大型爬虫项目
    C++运行速度快,适合开发大型爬虫项目,成本高
    PHP后端处理强

    3.6 实例——metaseeker

    metaseeker 是一款比较实用的网站数据采集程序,使用改程序,可以让大家比较快速、形象地了解爬虫的工作过程。
    下载地址:http://www.gooseeker.com/pro/product.html
    爬取网页信息地址:当当网新书栏

    1. 下载软件–>登录–>点MS谋数台(右上角)
      这里写图片描述

    2. 左上角输入当当网新书栏网址–>回车
      这里写图片描述

    3. 出现如图所示,接下来对准工作台操作。
      这里写图片描述

    4. 创建主题名并查重–>创建规则名
      这里写图片描述
      这里写图片描述
      这里写图片描述

    5. 选定规则名右击–>添加包容
      显示:
      这里写图片描述

    6. 输入抓取内容(商品价格和商品名称),并设置为关键内容后保存。
      这里写图片描述
      这里写图片描述

    7. 选择一个商品名称,我选了《北京女子图鉴》
      这里写图片描述

    8. 可能出现问题
      这里写图片描述

    9. 这样解决就好,左上角,刷新网页结构
      这里写图片描述

    10. 再次点击商品名,我们将网页标签中的 DIV 展开,移动到“#text”字样,选中,会在工作台出现商品名信息,说明商品定位成功。
      这里写图片描述
      这里写图片描述

    11. 右击“#text”,单机内容映射->商品名称,那么以后可以根据这个规则去爬取网页上其他商品的名称了。
      这里写图片描述

    12. 我们还需要指定价格的规则,此时在浏览器去榆中,单机该商品对应的价格,然后在网页标签处会自动进行定位。这里单机了对应价格“9.99”之后,网页标签处,自动定位到了对应的 I 标签下。
      这里写图片描述
      这里写图片描述

    13. 我们展开 I 标签,可以看到“#text”,单机它,工作台会出现对应价格信息。
      这里写图片描述

    14. 然后,我们同样需要选中该标签,将其映射到商品价格中去。
      这里写图片描述

    15. 标签规则映射好之后,我们返回工作台测试,便可看到当前是否爬取到该页面中的所有信息。
      这里写图片描述

    16. 成功采集到啦!

      如果想深入了解 metaseeker,可查阅相关资料,这里不做介绍。

    展开全文
  • 从python基础到爬虫实战,从python2.x ——> python3.x,适合新手以及老手
  • —— 目录 ——前言第一篇 理论基础篇第1章 什么是网络爬虫1.1 初识网络爬虫1.2 为什么要学网络爬虫1.3 网络爬虫的组成1.4 ...核心技术篇第3章 网络爬虫实现原理与实现技术3.1 网络爬虫实现原理详解3.2 爬行策略3.3...
  • 核心技术又有哪些呢?在本篇中,我们首先会介绍网络爬虫相关实现原理与实现技术;随后,讲解Urllib库的相关实战内容;紧接着,带领大家一起开发几种典型的网络爬虫,让大家在实战项目中由浅入深地掌握Python网络...
  • 精通Python网络爬虫 核心技术、框架与项目实战 韦玮著
  • 精通python网络爬虫核心技术,框架与项目实战,本书介绍系统介绍了爬虫的相关内容。
  • 精通Python网络爬虫 核心技术、框架与项目实战 ,韦玮
  • 精通Python网络爬虫 核心技术、框架与项目实战 韦玮 完整高清目录版
  • 1.3 网络爬虫的组成 接下来,我们将介绍网络爬虫的组成。网络爬虫由控制节点、爬虫节点、资源库构成。 图1-1所示是网络爬虫的控制节点和爬虫节点的结构关系。 图1-1 网络爬虫的控制节点和爬虫节点的结构关系 ...
  • 《精通Python网络爬虫 核心技术、框架与项目实战.pdf》
  • 本节书摘来自华章出版社《精通Python网络爬虫核心技术、框架与项目实战》一书中的第1章,第1.3节,作者 韦 玮,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.3 网络爬虫的组成 接下来,我们将介绍...
  • 本节书摘来自华章出版社《精通Python网络爬虫核心技术、框架与项目实战》一书中的第3章,第3.5节,作者 韦 玮,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.5 身份识别 在爬虫对网页爬取的过程中...
  • 网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。此时,我们可以...
  • 2.3 用户爬虫的那些事儿 用户爬虫是网络爬虫中的一种类型。所谓用户爬虫,指的是专门用来爬取互联网中用户数据的一种爬虫。由于互联网中的用户数据信息,相对来说是比较敏感的数据信息,所以,用户爬虫的利用价值...
  • 本书从系统化的视角,为那些想学习Python网络爬虫或者正在研究Python网络爬虫的朋友们提供了一个全面的参考,让读者可以系统地学习Python网络爬虫的方方面面,在...并且能够胜任Python网络爬虫工程师相关岗位的工作。
  • 对于爬虫,很多伙伴首选的可能就是Python了吧,我们在学习Python爬虫的时候得有侧重点,这篇文章教大家如何快速掌握Python爬虫核心!有不清楚的地方,可以留言! 1. 概述 本文主要实现一个简单的爬虫,目的是从一...
  • 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中。在搜索引擎中,主要使用通用网络爬虫对网页进行爬取及存储。 随着大数据时代的到来,我们经常需要在海量数据的互联网环境中搜集一些特定的数据...
  • 以推出的《Python网络爬虫》课程为例,内容涉及Scrapy框架、分布式爬虫核心技术,下面我们来一起看一下Python网络爬虫具体的学习内容吧! Python网络爬虫课程简介: 为了让具备Python基础的人群适合岗位的需求,...
  • 精通Python网络爬虫 核心技术、框架与项目实战 ,韦玮(含源码)
  • 公众号回复 “11756” 获取下载地址 扫码关注公众号,公众号回复 11756 获取下载地址 公众号回复 “11756” ...网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中。在搜索引擎中,主要使用通...
  • 《精通Python网络爬虫 核心技术、框架与项目实战》
  • 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中。在搜索引擎中,主要使用通用网络爬虫对网页进行爬取及存储。 随着大数据时代的到来,我们经常需要在海量数据的互联网环境中搜集一些特定的数据...
  • 这是一本关于python3的爬虫书籍,内容不是很多,但适合初学者入门学习
  • 精通Python网络爬虫 核心技术、框架与项目实战 ,韦玮(附源代码)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,741
精华内容 11,096
关键字:

爬虫相关核心技术

爬虫 订阅