与你共享街

标题: 精通Python爬虫框架Scrapy [美]迪米特里奥斯 考奇斯-劳卡斯 [打印本页]

作者: Money    时间: 2019-9-10 13:18
标题: 精通Python爬虫框架Scrapy [美]迪米特里奥斯 考奇斯-劳卡斯
本帖最后由 Money 于 2019-9-10 13:20 编辑
" I# d( {* f7 R1 s
: e7 w8 b9 \$ g8 N2 W: Z* d  编辑推荐
! ?' F  P; ], E( j7 b( P- q  Scrapy是一个开源的Python爬虫框架,可以用来轻松提取从页面数据。Scrapy带有丰富的特性,可通过简单的编码或配置来访问,从而可以节省开发人员数周的开发时间,并高效地提取所需数据。Scrapy有一个高度活跃且迅速增长的社区,而且已经成为黑客、创业者和Web爬取专家的首要框架。
2 a; {5 Z1 X  H2 \3 [, B  本书讲解了Scrapy的基础知识,讨论了如何从任意源提取数据,如何清理数据,以及如何使用Python和第三方API进行处理,以满足自身需求。本书还讲解了如何将爬取的数据高效地馈入数据库、搜索引擎和流数据处理系统(比如Apache Spark)。在学习完本书后,你将对数据爬取胸有成竹,并将数据应用在自己的应用程序中。7 A9 c+ T3 {+ }! G! {
  本书内容:
# [. k) o) [8 V; s' }3 m  使用HTML和Xpath提取所需的数据;6 J9 C$ v0 r& B+ |  B, B
  使用Python编写Scrapy爬虫,并在网络上进行爬取操作;将数据推送到任意数据库、搜搜引擎或分析系统的方法;配置爬虫,使其下载文件和图形,以及使用代理;创建用来限流数据的高效管道;
  B4 @1 Q2 r* D  使用Twitsted实践驱动的API并发处理数百个Item;让爬虫更快速,让内存使用率更高,以及对Scrapy性能进行调优的技巧;使用Scrapyd和Scrapinghub执行大规模分布式爬取操作的方法。
5 F) K! |5 P" T1 l7 \, M* d, @. w  收起全部↑+ |- D3 ^# c% w7 O# p& M
  内容简介
% L; k) ?' p' o# p8 Q% h  Scrapy是使用Python开发的一个快速、高层次的屏幕抓取和Web抓取框架,用于抓Web站点并从页面中提取结构化的数据。《精通Python爬虫框架Scrapy》以Scrapy 1.0版本为基础,讲解了Scrapy的基础知识,以及如何使用Python和三方API提取、整理数据,以满足自己的需求。
7 w& e1 [5 v' K3 e+ E; E$ F  l  本书共11章,其内容涵盖了Scrapy基础知识,理解HTML和XPath,安装Scrapy并爬取一个网站,使用爬虫填充数据库并输出到移动应用中,爬虫的强大功能,将爬虫部署到Scrapinghub云服务器,Scrapy的配置与管理,Scrapy编程,管道秘诀,理解 Scrapy性能,使用Scrapyd与实时分析进行分布式爬取。本书附录还提供了各种软件的安装与故障排除等内容。0 V5 W: k, i/ {5 h5 I6 D
  本书适合软件开发人员、数据科学家,以及对自然语言处理和机器学习感兴趣的人阅读。
$ t1 A" D) g# D7 T! d7 S5 R. F  作者简介
. z; ?9 O# @' x7 o) n  }  Dimitrios Kouzis-Loukas作为一位软件开发人员,已经拥有超过15年的经验。同时,他还使用自己掌握的知识和技能,向广大读者讲授如何编写软件。* f" ^( \& s& w+ m& V) p
  他学习并掌握了多门学科,包括数学、物理学以及微电子学。他对这些学科的透彻理解,提高了自身的标准,而不只是“实用的解决方案”。他知道真正的解决方案应当是像物理学规律一样确定,像ECC内存一样健壮,像数学一样通用。
4 D: S  Q! L$ B: Y' J, P' ~0 B3 L  Dimitrios目前正在使用新的数据中心技术开发低延迟、高可用的分布式系统。他是语言无关论者,不过对Python、C++和Java略有偏好。他对开源软硬件有着坚定的信念,他希望他的贡献能够造福于各个社区和全人类。
/ z  k' Y6 i  T" n9 ~  李斌,毕业于北京科技大学计算机科学与技术专业,获得硕士学位。曾任职于阿里巴巴,当前供职于凡普金科,负责应用安全工作。热爱Python编程和Web安全,希望以更加智能和自动化的方式提升网络安全。
1 l( y8 C, e3 L# {: c( c& @  目录; Z( X( Z# y: g4 a1 V
  前言1 H% Y6 Z/ M- @
  本书内容
4 ~9 a: e8 E0 _# o9 r" c( {% J  阅读本书的前提
1 M, e0 w& T" F  本书读者/ |+ `5 F8 l" ]( q- [
  第1章 Scrapy简介
- p. d0 ^! g6 X+ c4 D  X/ F  1.1 初识Scrapy
2 r9 ^/ _: B2 S# r  1.2 喜欢Scrapy的更多理由
9 G, C1 _; U5 r% `  1.3 关于本书:目标和用途
% k8 i# U1 P( F( F  1.4 掌握自动化数据爬取的重要性
! c" I5 O2 Z  g  H0 ]  1.5 在充满爬虫的世界里做一个好公民- j2 y8 z/ j  r! m
  1.6 Scrapy不是什么& w. h; Z2 [5 H& G5 v3 j* U
  1.7 本章小结
5 q- ?' j9 T1 Q, |3 c) S1 i) {1 r- ?  第2章 理解HTML和XPath9 k3 Z. O& r4 m: A6 E2 F
  2.1 HTML、DOM树表示以及XPath
: \% z+ j! m' m9 c& w  2.2 使用XPath选择HTML元素
# g* A% d) N+ h% G  2.3 本章小结
1 r. P, j3 ~  v( q" Z* K  第3章 爬虫基础4 W- H2 T/ v! S- h6 J0 Z
  3.1 安装Scrapy
3 L& T5 b+ @5 a4 Q$ A$ C1 U, d3 q  3.2 UR2IM——基本抓取流程; \& j- s# Z' g: j7 a2 l
  3.3 一个Scrapy项目
  Q- K; ?8 Q/ M& Q  3.4 抽取更多的URL) v/ y) v7 _2 m8 z2 c, Z" ~
  3.5 本章小结
4 X/ l' R/ b- U; }, T  第4章 从Scrapy到移动应用
5 N; R  C: h! l; _  4.1 选择手机应用框架
* h' C; i# J+ i: @  V  4.2 创建数据库和集合
+ `: A$ C, F" C2 ~6 m  4.3 使用Scrapy填充数据库
, T0 B% t+ S/ u' }# G# }& z  4.4 创建手机应用
, q6 i; U' c+ h, Z7 v  4.5 本章小结) |) ~- ^/ m: G  z% D
  第5章 迅速的爬虫技巧
6 L9 B5 x6 O, K, f4 o  5.1 需要登录的爬虫
* n& ^6 c; A5 Q" m. n, l  5.2 使用JSON API和AJAX页面的爬虫/ Q9 V5 |# D0 }6 q" h: @
  5.3 30倍速的房产爬虫; q5 }6 @% R5 C9 e. R
  5.4 基于Excel文件爬取的爬虫
; N" V# a' r* q" H. O; H  o0 ~  5.5 本章小结) B- L: Y) i' {0 @8 I  f5 X
  第6章 部署到Scrapinghub
1 r* w, \4 W; S9 K; {( F1 L- ~9 R  6.1 注册、登录及创建项目
( S8 o. x* e/ V  6.2 部署爬虫与计划运行$ I5 B! y. }; U! }$ R4 i9 d
  6.3 访问item: _$ o" B: Q6 y. \* i5 R, V- D
  6.4 计划定时爬取% n( g3 Z# I$ v4 i. }2 D
  6.5 本章小结
5 Y6 B/ W, r0 Y8 L7 J$ d  第7章 配置与管理$ D5 u# [  z, Z# T# g
  7.1 使用Scrapy设置
& J/ B6 F. ?7 \8 t3 I' E0 s  7.2 基本设置7 c$ V) `. l  q! w
  7.3 进阶设置0 K0 X1 F; _, ?$ f& _( d  g
  7.4 本章小结
: E8 U6 E8 S" W) b; E  第8章 Scrapy编程
" _8 ]6 ^. s9 @  8.1 Scrapy是一个Twisted应用1 Q! B9 I; B5 q# f- c/ c
  8.2 Scrapy架构概述
5 W7 g( Q0 `% K2 `  o/ z4 w  8.3 示例1:非常简单的管道
/ H+ s1 Z7 w0 b& y: u  8.4 信号0 D; f* k2 i+ a
  8.5 示例2:测量吞吐量和延时的扩展6 e6 o0 H8 z- o1 S& O- _& \
  8.6 中间件延伸
3 N9 ]+ ~! i7 b& J6 z0 i  8.7 本章小结
& ^7 F5 K. d  I# e' r  第9章 管道秘诀
+ h4 n+ Y' T+ M7 k4 A% Q5 O. N! w  9.1 使用REST API
3 E% E" i' ~6 ]7 W" \: G  9.2 与标准Python客户端建立数据库接口
6 \  |6 j8 r" a+ g$ b  9.3 使用Twisted专用客户端建立服务接口
, \( t8 U: h( J4 k, S3 @; F0 L, ]  9.4 为CPU密集型、阻塞或遗留功能建立接口
4 N4 d' K! ^3 C' H7 }  9.5 本章小结
- K3 i2 U( \% O8 K, P: z. r+ r, q/ a  第10章 理解Scrapy性能7 x% o, f" I& r% o, Q# ?+ _
  10.1 Scrapy引擎——一种直观方式; g% L# ^% [- `! }8 h/ Q$ e3 \
  10.2 使用telnet获得组件利用率
) s; [( n& S( t, i6 @" G6 E' |  10.3 基准系统
  M. ~  ^2 ^4 \% }+ F' {  10.4 标准性能模型
. u# ]0 y8 j4 U  10.5 解决性能问题
2 w% e& T, z( y! F/ }  s) {  10.6 故障排除流程; z; s% e3 X0 W7 w/ }* \
  10.7 本章小结8 S  W% M  n0 J
  第11章 使用Scrapyd与实时分析进行分布式爬取11.1 房产的标题是如何影响价格的
9 P* q  s4 f/ k$ P- y  11.2 Scrapyd4 `& D" v* H; ]* s  k" V* k1 X
  11.3 分布式系统概述" B  p# s/ |6 Y$ X
  11.4 爬虫和中间件的变化
" D3 T: X8 u4 R8 ^0 p6 [/ \  11.5 创建自定义监控命令
  }: @. Z# ^6 h4 `2 a  11.6 使用Apache Spark流计算偏移量6 v" H1 ]5 U- I% x3 ?' B
  11.7 运行分布式爬取
2 }3 N2 `: C9 `  11.8 系统性能; Q* g* F  J/ [8 c1 x# r) [
  11.9 关键要点5 Y1 t$ O, ?5 ]: j. c
  11.10 本章小结) R+ a7 T+ c% E* s* d% J
  附录A 必备软件的安装与故障排除
1 b8 j# g3 ]' l. G: t3 C, G, i  A.1 必备软件的安装
/ D* E6 l: P+ Q1 Z" m4 C3 f  A.2 系统
- [/ }$ C# o; w  w* J+ I8 ~& r- w  A.3 安装概述8 n- o0 F3 d9 q/ F" Q" \8 _
  A.4 在Linux上安装
/ V5 v+ e. i  n0 _+ W  A.5 在Windows或Mac上安装
0 T% f- c* E- l- K8 j( z7 W  A.6 系统创建与操作FAQ( M5 M: ]& \4 w
  A.7 有一个无法解决的问题,怎么办+ g! |' K6 q8 s. q8 n5 a
  欢迎来到异步社区!' f  j% ^4 F5 N. w, b; d
  异步社区的来历  p4 X- a% u- r9 D3 `
  社区里都有什么?. f/ g' j, b- Z- T
  灵活优惠的购书: Y3 m4 k) e% O$ Q3 b. G& v5 w5 q
  社区里还可以做什么?
; {5 @- t9 S1 s9 Q/ @  加入异步: A% ~5 T, W. o1 j, g
  前言
7 N! M6 t; G& _" v  让我来做一个大胆的猜测。下面的两个故事之一会和你的经历有些相似。
3 F. L1 ]3 M, ~. }  你与Scrapy的第一次相遇是在网上搜索类似“Web scraping Python”的内容时。你快速对其进行了浏览,然后想“这太复杂了吧……我只需要一些简单的东西。”接下来,你使用Requests库开发了一个Python脚本,并且挣扎于Beautiful Soup中,但最终还是完成了很酷的工作。它有些慢,所以你让它整夜运行。你重新启动了几次,忽略了一些不完整的链接和非英文字符,到早上的时候,大部分网站已经“骄傲地”存在你的硬盘中了。然而难过的是,不知什么原因,你不想再看到自己写的代码。当你下一次再想抓取某些东西时,则会直接前往scrapy.org,而这一次文档给了你很好的印象。现在你可以感受到Scrapy能够以优雅且轻松的方式解决了你面临的所有问题,甚至还考虑到了你没有想到的问题。你不会再回头了。! \" g  b' V% S  e' f$ o
  另一种情况是,你与Scrapy的第一次相遇是在进行网络爬取项目的研究时。你需要的是健壮、快速的企业级应用,而大部分花哨的一键式网络爬取工具无法满足需求。你希望它简单,但又有足够的灵活性,能够让你为不同源定制不同的行为,提供不同的输出类型,并且能够以自动化的形式保证24/7可靠运行。提供爬取服务的公司似乎太贵了,你觉得使用开源解决方案比固定供应商更加舒服。从一开始,Scrapy就像一个确定的赢家。$ Z3 q- H8 Q4 l3 _/ ?7 X7 ?
  无论你是出于何种目的选择了本书,我都很高兴能够在这本专注于Scrapy的图书中遇到你。Scrapy是全世界爬虫专家的秘密。他们知道如何使用它以节省工作时间,提供出色的性能,并且使他们的主机费用达到最低限度。如果你没有太多经验,但是还想实现同样的结果,那么很不幸的是,Google并没有能够帮到你。网络上大多数Scrapy信息要么太简单低效,要么太复杂。对于那些想要了解如何充分利用Scrapy找到准确、易理解且组织良好的信息的人们来说,本书是非常有必要的。我希望本书能够帮助Scrapy社区进一步发展,并使其得以广泛应用。
( h% b2 `# Z% a, ?$ \1 o2 I) w  本书内容
- m* [6 }5 ~$ d9 q  第1章,Scrapy简介,介绍本书和Scrapy,可以让你对该框架及本书剩余部分有一个明确的期望。0 g0 F4 j6 n0 I4 _! Q) b6 }0 O" v
  第2章,理解HTML和XPath,旨在使爬虫初学者能够快速了解Web相关技术以及我们后续将会使用的技巧。
: ]: L( D, \! e+ V+ r1 f5 ~) t  第3章,爬虫基础,介绍了如何安装Scrapy,并爬取一个网站。我们通过向你展示每一个行动背后的方法和思路,逐步开发该示例。学习完本章之后,你将能够爬取大部分简单的网站。
# @, K- W. N: M4 T9 A6 e) A  第4章,从Scrapy到移动应用,展示了如何使用我们的爬虫填充数据库并输出给移动应用。本章过后,你将清晰地认识到爬虫在市场方面所带来的好处。8 d( w' D1 V* }& B/ R+ h
  第5章,迅速的爬虫技巧,展示了更强大的爬虫功能,包括登录、更快速地抓取、消费API以及爬取URL列表。- X$ x* b+ w: @5 s( [. T6 c! ?
  第6章,部署到Scrapinghub,展示了如何将爬虫部署到Scrapinghub的云服务器中,并享受其带来的可用性、易部署以及可控性等特性。
/ b2 n/ Q. m7 _% Q- E2 ]  第7章,配置与管理,以组织良好的表现形式介绍了大量的Scrapy功能,这些功能可以通过Scrapy配置启用或调整。1 g& m* F$ T5 b# j  [
  第8章,Scrapy编程,通过展示如何使用底层的Twisted引擎和Scrapy架构对其功能的各个方面进行扩展,将我们的知识带入一个全新的水平。
9 K6 C1 X, W; w. N5 J* n4 U  第9章,管道秘诀,提供了许多示例,在这里我们修改了Scrapy的一些功能,在不会造成性能退化的情况下,将数据插入到数据库(比如MySQL、Elasticsearch及Redis)、接口API,以及遗留应用中。  A: k/ ?+ z7 y# b, K' F( s+ O7 f! n/ ]
  第10章,理解Scrapy性能,将帮助我们理解Scrapy的时间是如何花费的,以及我们需要怎么做来提升其性能。/ r( C. M. ~1 Z( I* U4 }% t' Z9 V
  第11章,使用Scrapyd与实时分析进行分布式爬取,这是本书最后一章,展示了如何在多台服务器中使用Scrapyd实现横向扩展,以及如何将爬取得到的数据提供给Apache Spark服务器以执行数据流分析。
, }* H& k, H) A; t  阅读本书的前提5 ]) f: h% C2 h$ z) i' u2 x
  为了使本书代码和内容的受众尽可能广泛,我们付出了大量的努力。我们希望提供涉及多服务器和数据库的有趣示例,不过我们并不希望你必须完全了解如何创建它们。我们使用了一个称为Vagrant的伟大技术,用于在你的计算机中自动下载和创建一次性的多服务器环境。我们的Vagrant配置在Mac OS X和Windows上时使用了虚拟机,而在Linux上则是原生运行。" f  E9 X: u& X2 A. E
  对于Windows和Mac OS X,你需要一个支持Intel或AMD虚拟化技术(VT-x或AMD-v)的64位计算机。大多数现代计算机都没有问题。对于大部分章节来说,你还需要专门为虚拟机准备1GB内存,不过在第9章和第11章中则需要2GB内存。附录A讲解了安装必要软件的所有细节。) d7 z8 v! l- \4 q# h
  Scrapy本身对硬件和软件的需求更加有限。如果你是一位有经验的读者,并且不想使用Vagrant,也可以根据第 3 章的内容在任何操作系统中安装Scrapy,即使其内存十分有限。
, h$ z8 z6 j9 Z' J% N  当你成功创建Vagrant环境后,无需网络连接,就可以运行本书几乎全部示例了(第4章和第6章的示例除外)。是的,你可以在航班上阅读本书了。
3 f% D+ y( p+ s/ Z% W7 w  本书读者3 g) a; A2 D& t- [3 W
  本书尝试着去适应广泛的读者群体。它可能适合如下人群:
6 _# A6 `4 u* }+ }, _* I, f  需要源数据驱动应用的互联网创业者;
; j8 _1 V6 z" A, y% `( @  需要抽取数据进行分析或训练模型的数据科学家与机器学习从业者;需要开发大规模爬虫基础架构的软件工程师;, U' M0 n7 Q) v+ ~$ e6 U6 C
  想要为其下一个很酷的项目在树莓派上运行Scrapy的爱好者。" |& V2 g8 ]9 X
  就必备知识而言,阅读本书只需要用到很少的部分。在最开始的几章中,本书为那些几乎没有爬虫经验的读者提供了网络技术和爬虫的基础知识。Python易于阅读,对于有其他编程语言基本经验的任何读者来说,与爬虫相关的章节中给出的大部分代码都很易于理解。
( F( b3 {/ N) p& Y  坦率地说,我相信如果一个人在心中有一个项目,并且想使用Scrapy的话,他就能够修改本书中的示例代码,并在几个小时之内良好地运行起来,即使这个人之前没有爬虫、Scrapy或Python经验。
) s' h' S$ x7 d% Z  在本书的后半部分中,我们将变得更加依赖于Python,此时初学者可能希望在进一步研究之前,先让自己用几个星期的时间丰富Scrapy的基础经验。此时,更有经验的Python/Scrapy开发者将学习使用Twisted进行事件驱动的Python开发,以及非常有趣的Scrapy内部知识。在性能章节,一些数学知识可能会有用处,不过即使没有,大多数图表也能给我们清晰的感受。

4 b9 v3 v+ W9 B& \: H0 B6 j3 ^2 E' n, s1 D6 z% y5 C4 p

作者: samsonlee888    时间: 2019-9-10 21:23
thks a lot
作者: kitajima8888    时间: 2019-12-9 16:55
谢谢楼主共享




欢迎光临 与你共享街 (http://www.ynjie.com/) Powered by Discuz! X3.4