您好,欢迎光临有路网!
从零开始学Scrapy网络爬虫(视频教学版)
QQ咨询:
有路璐璐:

从零开始学Scrapy网络爬虫(视频教学版)

  • 作者:张涛
  • 出版社:机械工业出版社
  • ISBN:9787111634744
  • 出版日期:2019年09月01日
  • 页数:300
  • 定价:¥99.00
  • 分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    • 出版社
    • ISBN
      9787111634744
    • 作者
    • 页数
      300
    • 出版时间
      2019年09月01日
    • 定价
      ¥99.00
    • 所属分类
    内容提要
    《从零开始学Scrapy网络爬虫》从零开始,循序渐进地介绍了目前流行的网络爬虫框架Scrapy。即使你没有任何编程基础,阅读《从零开始学Scrapy网络爬虫》也不会有压力,因为书中有针对性地介绍了Python编程技术。另外,《从零开始学Scrapy网络爬虫》在讲解过程中以案例为导向,通过对案例的不断迭代、优化,让读者加深对知识的理解,并通过14个项目案例,提高读者解决实际问题的能力。 《从零开始学Scrapy网络爬虫》共13章。其中,第1~4章为基础篇,介绍了Python基础、网络爬虫基础、Scrapy框架及基本的爬虫功能。第5~10章为进阶篇,介绍了如何将爬虫数据存储于MySQL、MongoDB和Redis数据库中;如何实现异步AJAX数据的爬取;如何使用Selenium和Splash实现动态网站的爬取;如何实现模拟登录功能;如何突破反爬虫技术,以及如何实现文件和图片的下载。第11~13章为**篇,介绍了使用Scrapy-Redis实现分布式爬虫;使用Scrapyd和Docker部署分布式爬虫;使用Gerapy管理分布式爬虫,并实现了一个抢票软件的综合项目。 《从零开始学Scrapy
    文章节选
    第2章 网络爬虫基础 网络爬虫实现的思想是模拟用户使用浏览器向网站发送请求,网站响应请求后,将HTML文档发送过来,爬虫再对网页做信息提取和存储。因此,了解浏览器与网站服务器之间的通信方式和交互过程,理解HTML页面的组织和结构,掌握页面信息的提取和存储技术,能进一步加深对网络爬虫原理的理解。 2.1 HTTP基本原理 下面来看一下用户从浏览器输入某个网址到获取网站内容的整个过程。该过程主要分为4个步骤,如图2-1所示。 图2-1 访问网站的过程 (1)在浏览器中输入URL地址(如百度地址https://www.baidu.com),然后回车。 (2)在浏览器中向网站服务器发送请求访问的命令。 (3)网站服务器响应请求后,向浏览器发送HTML文档(也可以是图片、视频和JSON数据等其他资源)。 (4)浏览器解析、渲染HTML文档后,将页面展示给用户。 下面详细讲解这些步骤中的关键知识,这将有助于我们更深入地了解爬虫的基本原理。 2.1.1 URL介绍 我们把在浏览器的地址栏里输入的网址叫做URL(Uniform Resource Locator,统一资源定位符)。URL用于确定分散在互联网中各种资源的位置和访问方式。例如摄图网中故宫博物馆的图片地址为http://seopic.699pic.com/photo/50088/2824.jpg_wh1200.jpg。它包含了以下几种信息: ? 访问协议:http,用于确定数据传输的方式。 ? 服务器名称:seopic.699pic.com,图片所在的网站服务器地址。 ? 访问路径:photo/50088,图片目录。 ? 资源名:2824.jpg_wh1200.jpg,图片名称。 2.1.2 HTTP和HTTPS协议 首先来看一下访问协议。为了保证浏览器能够正确解析并显示网站服务器传送的资源,需要制定一套双方都遵守的协议,*常见的有HTTP和HTTPS协议。当然还有其他功能的协议,如FTP(文件传输协议)、TELNET(远程登录服务)、FILE(本地文件传输协议)等。在爬虫中,通常是通过HTTP或HTTPS协议获取到页面的。 下面就来了解一下这两个协议。 HTTP(HyperText Transfer Protocol,超文本传输协议)是用于从网络中传输超文本到本地浏览器的传输协议,是互联网中应用*广泛的一种网络协议。它能保证**而准确地传送超文本文档,我们平常看到的HTML文档就是超文本文档。 HTTP协议以明文方式发送内容,不提供任何方式的数据加密。像银行卡号、密码等对**性要求高的信息传输,就不能使用HTTP,而要使用HTTPS协议。 HTTPS(HyperText Transfer Protocol over Secure Socket Layer,**套接字层超文本传输协议)是以**为目标的HTTP通道,简单地讲,就是HTTP的**版。HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并对浏览器和服务器之间的通信加密。 目前,越来越多的网站都开始采用**级别更高的HTTPS协议了。 2.1.3 HTTP请求(Request) 当用户通过浏览器访问某个网站时,浏览器会向网站服务器发送访问请求,这个请求就叫做HTTP请求。请求包含的内容主要有: ? 请求方法(Request Method); ? 请求网址(Request URL); ? 请求头(Request Headers); ? 请求体(Request Body)。 为了更直观地说明这个过程,我们使用Chrome浏览器自带的“***工具”来查看浏览器发送的请求信息。下面以访问百度(https://www.baidu.com)为例来讲解。 (1)打开Chrome浏览器,按F12键,显示“***工具”栏。 (2)在地址栏中输入百度网址https://www.baidu.com,然后回车。 (3)此时“***工具”栏抓取到了许多浏览器请求及服务器响应信息。按如图2-2所示的顺序选中各个选项,在第4步的Headers选项卡中,就能查看到请求信息了。 图2-2 查看请求内容 下面来看一下浏览器向百度的网站服务器发送了哪些请求信息。 1.请求方法(Request Method) HTTP协议定义了许多与服务器交互的方法,*常用的有GET和POST方法。 如果浏览器向服务器发送一个GET请求,则请求的参数信息会直接包含在URL中。例如在百度搜索栏中输入scrapy,单击“百度一下”按钮,就形成了一个GET请求。搜索结果页面的URL变为https://www.baidu.com/s?wd=scrapy,URL中问号(?)后面的wd=scrapy就是请求的参数,表示要搜寻的关键字。 POST请求主要用于表单的提交。表单中输入的卡号、密码等隐私信息通过POST请求方式提交后,数据不会暴露在URL中,而是保存于请求体中,避免了信息的泄露。 2.请求网址(Request URL) 另外,还有一个选项Remote Address:180.97.33.107:443,这是百度服务器的IP地址。也可以使用IP地址来访问百度。 3.请求头(Request Headers) 请求头的内容在Headers选项卡中的Request Headers目录下,如图2-3所示。请求头中包含了许多有关客户端环境和请求正文的信息,比较重要的信息有Cookie和User-Agent等。 图2-3 Chrome中的请求头 下面简单介绍常用的请求头信息。 ? Accept:浏览器端可以接受的媒体类型。text/html代表浏览器可以接受服务器发送的文档类型为text/html,也就是我们常说的HTML文档。 ? Accept-Encoding:浏览器接受的编码方式。 ? Accept-Language:浏览器所接受的语言种类。 ? Connection:表示是否需要持久连接。keep-alive表示浏览器与网站服务器保持连接;close表示一个请求结束后,浏览器和网站服务器就会断开,下次请求时需重新连接。 ? Cookie:有时也用复数形式Cookies,指网站为了辨别用户身份、进行会话跟踪而储存在用户本地的数据(通常经过加密),由网站服务器创建。例如当我们登录后,访问该网站的其他页面时,发现都是处于登录状态,这是Cookie在发挥作用。因为浏览器每次在请求该站点的页面时,都会在请求头中加上保存有用户名和密码等信息的Cookie并将其发送给服务器,服务器识别出该用户后,就将页面发送给浏览器。在爬虫中,有时需要爬取登录后才能访问的页面,通过对Cookie进行设置,就可以成功访问登录后的页面了。 ? Host:指定被请求资源的Internet主机和端口号,通常从URL中提取。 ? User-Agent:告诉网站服务器,客户端使用的操作系统、浏览器的名称和版本、CPU版本,以及浏览器渲染引擎、浏览器语言等。在爬虫中,设置此项可以将爬虫伪装成浏览器。 4.请求体(Request Body) 请求体中保存的内容一般是POST请求发送的表单数据。对于GET请求,请求体为空。 2.1.4 HTTP响应(Response) 当网站服务器接收到浏览器的请求后,会发送响应消息给浏览器,这个响应就叫做HTTP响应。一个完整的响应消息主要包含: ? 响应状态码(Response Status Code); ? 响应头(Response Headers); ? 响应体(Response Body)。 1.响应状态码(Response Status Code) 响应状态码表示服务器对请求的响应结果。例如,200代表服务器响应成功,403代表禁止访问,404代表页面未找到,408代表请求超时。浏览器会根据状态码做出相应的处理。在爬虫中,可以根据状态码来判断服务器的状态,如果状态码为200,则继续处理数据,否则直接忽略。表2-1中列举了常见的状态码。 表2-1 常见状态码及说明 2.响应头(Response Headers) 响应头中包含了服务器对请求的应答信息。在Chrome浏览器的“***工具”中,响应头的内容在Headers选项卡中的Response Headers目录中,如图2-4所示。 图2-4 Chrome中的响应头信息 下面简单介绍一下常用的响应头信息。 ? Date:服务器响应时间。 ? Content-Type:返回数据的文档类型,如text/html代表返回HTML文档;application/x-javascript代表返回JavaScript文件;image/jpeg代表返回图片。 ? Content-Encoding:服务器支持的返回内容压缩编码类型。 ? Server:服务器软件的名称。 ? Set-Cookie:设置HTTP Cookie。 ? Expires:响应过期的日期和时间。 3.响应体(Response Body) 响应体中存放服务器发送给浏览器的正文数据。在Chrome浏览器的“***工具”中,与Headers选项卡平行的Response选项卡中存储的就是响应体数据。比如请求访问百度首页时,它的响应体就是百度首页的HTML代码,如图2-5所示。 图2-5 服务器返回的百度首页的响应体 当访问摄图网中故宫博物馆的图片(http://seopic.699pic.com/photo/50088/2824. jpg_wh1200.jpg)时,它的响应体就是一张图片的二进制数据。Response选项卡中无法显示图片数据,在左边的Preview选项卡中可以预览,如图2-6所示。 图2-6 服务器返回的图片预览 在爬虫中,我们从响应体中获取HTML代码、JSON数据和网络图片等,然后从中提取相应的内容。
    目录
    第1篇 基础篇 第1章 Python基础 2 1.1 Python简介 2 1.1.1 Python简史 2 1.1.2 搭建Python环境 3 1.1.3 安装PyCharm集成开发环境 6 1.2 Python基本语法 7 1.2.1 基本数据类型和运算 7 1.2.2 运算符和表达式 8 1.2.3 条件判断语句 9 1.2.4 循环语句 10 1.2.5 字符串 12 1.3 Python内置数据结构 14 1.3.1 列表 15 1.3.2 字典 16 1.3.3 元组 17 1.3.4 遍历对象集合 17 1.4 Python模块化设计 18 1.4.1 函数 18 1.4.2 迭代器(iterator) 20 1.4.3 生成器(Generator) 20 1.4.4 类和对象 22 1.4.5 文件与异常 23 1.5 本章小结 25 第2章 网络爬虫基础 26 2.1 HTTP基本原理 26 2.1.1 URL介绍 27 2.1.2 HTTP和HTTPS协议 27 2.1.3 HTTP请求(Request) 27 2.1.4 HTTP响应(Response) 30 2.2 网页基础 32 2.2.1 HTML文档 33 2.2.2 网页的结构 33 2.2.3 节点树及节点之间的关系 34 2.3 使用XPath提取网页信息 36 2.3.1 XPath介绍 36 2.3.2 XPath常用路径表达式 36 2.3.3 XPath带谓语的路径表达式 39 2.4 本章小结 40 第3章 Scrapy框架介绍 41 3.1 网络爬虫原理 41 3.1.1 爬虫执行的流程 41 3.2 Scrapy框架结构及执行流程 42 3.2.1 Scrapy框架结构 42 3.2.2 Scrapy执行流程 44 3.3 Scrapy安装 44 3.3.1 使用pip安装Scrapy 44 3.3.2 常见安装错误 45 3.3.3 验证安装 46 3.4 **个网络爬虫 46 3.4.1 需求分析 46 3.4.2 创建项目 47 3.4.3 分析页面 48 3.4.4 实现Spider爬虫功能 49 3.4.5 运行爬虫 50 3.4.6 常见问题 51 3.5 本章小结 52 第4章 Scrapy网络爬虫基础 53 4.1 使用Spider提取数据 53 4.1.1 Spider组件介绍 53 4.1.2 重写start_requests()方法 55 4.1.3 Request对象 57 4.1.4 使用选择器提取数据 58 4.1.5 Response对象与XPath 59 4.1.6 Response对象与CSS 61 4.1.7 进一步了解Response对象 62 4.1.8 多页数据的爬取 63 4.2 使用Item封装数据 64 4.2.1 定义Item和Field 65 4.2.2 使用ItemLoader填充容器 66 4.3 使用Pipeline处理数据 69 4.3.1 Item Pipeline介绍 70 4.3.2 编写自己的Item Pipeline 70 4.3.3 启用Item Pipeline 71 4.3.4 多个Item Pipeline 71 4.3.5 保存为其他类型文件 72 4.4 项目案例:爬取链家网二手房信息 75 4.4.1 项目需求 75 4.4.2 技术分析 76 4.4.3 代码实现及解析 77 4.5 本章小结 85 第2篇 进阶篇 第5章 数据库存储 88 5.1 MySQL数据库 88 5.1.1 关系型数据库概述 88 5.1.2 下载和安装MySQL数据库 88 5.1.3 数据库管理工具Navicat 92 5.1.4 Python访问MySQL数据库 94 5.1.5 项目案例 97 5.2 MongoDB数据库 100 5.2.1 NoSQL概述 100 5.2.2 MongoDB介绍 100 5.2.3 MongoDB的下载和安装 101 5.2.4 Python访问MongoDB数据库 102 5.2.5 项目案例 108 5.3 Redis数据库 111 5.3.1 Redis的下载和安装 111 5.3.2 Python访问Redis 113 5.3.3 项目案例 118 5.4 本章小结 121 第6章 JavaScript与AJAX数据爬取 122 6.1 JavaScript简介 122 6.2 项目案例:爬取QQ音乐榜单歌曲 122 6.2.1 项目需求 122 6.2.2 技术分析 123 6.2.3 代码实现及解析 126 6.2.4 更常见的动态网页 128 6.3 AJAX简介 129 6.4 项目案例:爬取豆瓣电影信息 130 6.4.1 项目需求 130 6.4.2 技术分析 130 6.4.3 代码实现及解析 133 6.5 本章小结 135 第7章 动态渲染页面的爬取 136 7.1 Selenium实现动态页面爬取 136 7.1.1 Selenium安装 136 7.1.2 Selenium简单实现 137 7.1.3 Selenium语法 138 7.2 项目案例:爬取**头条热点新闻 145 7.2.1 项目需求 145 7.2.2 技术分析 145 7.2.3 代码实现及解析 147 7.3 Splash实现动态页面爬取 151 7.3.1 Splash介绍 151 7.3.2 Splash环境搭建 152 7.3.3 Splash模块介绍 156 7.4 项目案例:爬取一号店中的iPhone手机信息 162 7.4.1 项目需求 162 7.4.2 技术分析 163 7.4.3 代码实现及解析 165 7.5 本章小结 168 第8章 模拟登录 169 8.1 模拟登录解析 169 8.1.1 登录过程解析 169 8.1.2 模拟登录的实现 171 8.2 验证码识别 174 8.2.1 使用OCR识别验证码 174 8.2.2 处理复杂验证码 176 8.2.3 五花八门的验证码 177 8.3 Cookie自动登录 177 8.3.1 Cookie介绍 178 8.3.2 获取Cookie的库—browsercookie 179 8.4 项目案例:爬取起点中文网某用户的书架信息 180 8.4.1 项目需求 180 8.4.2 技术分析 180 8.4.3 代码实现及解析 182 8.5 本章小结 184 第9章 突破反爬虫技术 185 9.1 反爬虫技术及突破措施 185 9.2 伪装成不同的浏览器 187 9.2.1 UserAgentMiddleware中间件介绍 187 9.2.2 实现伪装成随机浏览器 188 9.2.3 更简单的方法 191 9.3 使用HTTP代理服务器 192 9.3.1 HTTP代理服务器 192 9.3.2 获取免费代理 193 9.3.3 实现随机代理 199 9.4 本章小结 202 第10章 文件和图片下载 203 10.1 文件下载 203 10.1.1 FilesPipeline执行流程 203 10.2 项目案例:爬取seaborn案例源文件 204 10.2.1 项目需求 204 10.2.2 技术分析 206 10.2.3 代码实现及解析 206 10.2.4 更多功能 211 10.3 图片下载 212 10.4 项目案例:爬取摄图网图片 213 10.4.1 项目需求 213 10.4.2 技术分析 215 10.4.3 代码实现及解析 215 10.5 本章小结 221 第3篇 **篇 第11章 Scrapy-Redis实现分布式爬虫 224 11.1 分布式爬虫原理 224 11.2 Scrapy-Redis实现分布式爬虫分析 225 11.2.1 实现分布式爬虫思路 225 11.2.2 Scrapy-Redis代码解析 226 11.2.3 分布式爬虫功能配置 231 11.3 项目案例:分布式爬虫爬取摄图网图片 233 11.3.1 技术分析 233 11.3.2 代码实现及解析 234 11.4 本章小结 237 第12章 Scrapyd部署分布式爬虫 238 12.1 使用Scrapyd部署分布式爬虫 238 12.1.1 Scrapyd的安装及运行 238 12.1.2 Scrapyd功能介绍 241 12.2 使用Scrapyd-Client批量部署 244 12.3 使用Docker部署分布式爬虫 248 12.4 使用Gerapy管理分布式爬虫 253 12.5 本章小结 258 第13章 综合项目:抢票软件的实现 259 13.1 项目需求 259 13.2 技术分析 262 13.3 项目实现及解析 263 13.3.1 搭建Scrapy项目框架 263 13.3.2 实现获取站点信息的爬虫 264 13.3.3 实现站点处理类 266 13.3.4 实现购票类 267 13.3.5 实现购票功能 280 13.3.6 运行项目 282 13.3.7 优化项目 282 13.4 本章小结 283

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外