|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
. M% r0 {6 c6 G& I
% C) w, {8 c$ C) {, z' c9 X' V
书名:《Python爬虫开发与项目实战》0 S( I5 d8 y4 Y) ~8 F
作者:范传辉- T. F% ^; x! z
出版社:机械工业出版社
: D0 }- W: X3 O( G. O: x1 O. o出版年:第1版 (2017年6月1日)" q+ l3 h# b. z2 s9 R* V0 @; x
定价:79.00
) m& G7 O' |/ V4 b, V装帧:平装) q$ K6 s0 N" L ?8 j/ I
ISBN:9787111563877: t& ]4 e# u, h
" g3 U+ r/ e1 @/ s9 }' k5 G' \
) [ k' P! N0 q2 C( f( }1 h
购买链接:
9 R, e+ l# E/ ]' r R5 x( H
- b: S+ _& p& r) u ^2 B1 u亚马逊 -> 传送门. R1 o7 q: x- _- M q
, L# R ]3 j; h! H( A1 ]3 k当当网 -> 传送门
% G; ^5 t0 U7 R% o, l7 r' @7 d) G' g
京东 -> 传送门( h# E5 o6 I9 _1 z- l2 |9 {0 i) q x
+ {/ p# e/ R; T8 n) a6 B3 z$ R8 C天猫 -> 传送门
8 ^1 b3 I* x/ M$ W8 Z: ^ {+ j8 K; J" H
3 y' P/ x& c. Y1 o
内容简介:
) T2 F7 u' T* |7 J7 P* W8 \6 ?0 Y+ F! F; `
本书从基本的爬虫原理开始讲解,通过介绍 Pthyon 编程语言与 HTML 基础知识引领读者入门,之后根据当前风起云涌的云计算、大数据热潮,重点讲述了云计算的相关内容及其在爬虫中的应用,进而介绍如何设计自己的爬虫应用。主要内容分为基础篇、中级篇、深入篇,基础篇包括 Python 编程基础、Web 前端基础、HTML 基础知识、基础爬虫设计、强化爬虫技术等。中级篇包括数据存储、动态网站抓取、协议分析、Scrapy 爬虫框架分析及实战案例等。高级篇包括增量式爬虫、分布式爬虫、人性化爬虫等框架设计。
& E& J/ `& f& d( C, ?5 P, p2 L9 ^2 _+ O2 o* C
5 U/ R$ E/ L7 N3 X目录:& V2 f& q4 i5 Q$ X' ]( D
1 `( R: `6 H' m, S- C前言; ^8 m( M" J- k* \2 y
8 {, F/ Y( `7 G7 d' j
★ 基础篇
G' p* L2 f% d0 Y3 ?' _
@% ~1 H% z( R第1章 回顾Python编程 22 I! \8 v2 o8 t5 ]0 G0 R& F7 X, @
1.1 安装Python 2% L7 \% ^0 Q2 m* D2 }
1.1.1 Windows上安装Python 2* c8 t. e- Q7 K3 Q* |2 g* Y
1.1.2 Ubuntu上的Python 3% m: x1 f! ]6 L
1.2 搭建开发环境 4
. h/ L6 B. o' X# l1.2.1 Eclipse+PyDev 4
" c. Y( b+ {" n/ C4 p1.2.2 PyCharm 10+ ^ D! d- ^" Q2 a
1.3 IO编程 11+ B" C9 u8 q0 u3 l+ c: u3 g% |
1.3.1 文件读写 11
0 |* P+ @/ ]- E/ i! t' S1.3.2 操作文件和目录 14% x7 f# _: J8 [% ]
1.3.3 序列化操作 15% U: D' y5 h/ h5 z/ P
1.4 进程和线程 16
! ~+ e- A8 B7 f- C1.4.1 多进程 16
) v x9 `& z; Z7 j. j( y1.4.2 多线程 227 l: e2 T6 U* M8 c( A* `
1.4.3 协程 25
8 P. S" r/ L/ y" E4 L8 ^0 P3 r1.4.4 分布式进程 27: L$ ?9 k" X8 k' l$ k$ Z
1.5 网络编程 32
* j" M0 s9 M0 i; _3 o- ?1.5.1 TCP编程 33
7 u1 a9 A) g# ?4 a) c: ^/ {$ L5 ?1.5.2 UDP编程 35
3 Q4 w/ N) G& ~/ o1.6 小结 36
% {, I1 _! C( g! Y% `" E$ v0 k4 \+ ` G* H0 i3 ?0 R; e
第2章 Web前端基础 376 u4 z$ Z) V: F g& L& l
2.1 W3C标准 37
% b; m; ]- k2 x5 ]0 f1 C2.1.1 HTML 379 s1 F# n3 z. \0 b
2.1.2 CSS 47) x! h5 T/ J3 v/ w
2.1.3517 ]- t1 R% w! E9 t# ^; w" q n3 O
2.1.4 XPath 56
" b8 m& y+ J- e) B2.1.5 JSON 61
1 F `, m8 A& X2 |) S) e( J2.2 HTTP标准 61
" o2 x7 O2 P! Q1 g2.2.1 HTTP请求过程 62
2 V% l& B: ~. L) I" C* v2.2.2 HTTP状态码含义 62% `& R, ?) r. N3 Q, ^7 k
2.2.3 HTTP头部信息 63- g# M+ P: A' g
2.2.4 Cookie状态管理 66* Z% M; Q" t. J$ _
2.2.5 HTTP请求方式 66% ]6 b# v8 n* j( I
2.3 小结 68
& M9 w/ @, s/ U( j6 I$ F/ K" ~- P ]8 n8 K! l" t2 U
第3章 初识网络爬虫 69" X/ K% N' x8 E/ M3 t. v% b" t
3.1 网络爬虫概述 691 W% s5 }2 K, V [2 s- u( K* Z
3.1.1 网络爬虫及其应用 692 ~8 A/ o7 S S( Y( M& d
3.1.2 网络爬虫结构 71
2 G1 j8 _! b* i% S6 ~3.2 HTTP请求的Python实现 72' H5 |" ^/ I4 W; |' H+ e3 X
3.2.1 urllib2/urllib实现 72
8 f0 `) N+ F4 |5 n3.2.2 httplib/urllib实现 76
/ c1 Q) E* x7 L/ D$ b3.2.3 更人性化的Requests 77
- [4 R# V; P- x+ D/ ?3.3 小结 82
2 H5 |7 X8 u+ M9 j4 g6 h: l7 a2 X% X3 C2 E& R
第4章 HTML解析大法 83
6 w- e$ B: P0 m% m4.1 初识Firebug 830 L7 i# R! J- q% V1 K
4.1.1 安装Firebug 84, E8 ?4 R* E$ o( p0 q
4.1.2 强大的功能 84
6 o; w* i* e* |/ y% L4 d0 a5 x4.2 正则表达式 954 R8 z% O0 ?( a3 o: H8 v0 x" X
4.2.1 基本语法与使用 964 F4 R9 }, s& U$ U
4.2.2 Python与正则 102
$ X/ Z3 u. k7 {5 p7 D9 y( t$ w) Q4.3 强大的BeautifulSoup 1085 u0 m* i/ _+ S7 ]9 d
4.3.1 安装BeautifulSoup 1084 u. ]" W8 w/ x6 R9 ?7 F/ C0 R; g
4.3.2 BeautifulSoup的使用 109
* h9 t1 e5 \4 k& H& Z m4 E% ^4.3.3 lxml的XPath解析 124( S7 ], p+ Z2 S2 U8 V6 Q
4.4 小结 1266 [7 _) F: X2 }% x
" w3 B; n$ @. I: I4 ~7 m
第5章 数据存储(无数据库版) 127
' P; j8 R+ K v$ ~1 |0 `1 l/ s' @5 g5.1 HTML正文抽取 1277 e) A! g, D# Y; l- ~3 x, h
5.1.1 存储为JSON 127( L, |9 h# T$ ~ a3 `- A+ x0 s
5.1.2 存储为CSV 132
3 J( i) K. }4 p5.2 多媒体文件抽取 1361 m" P2 Q1 q5 e, K1 x
5.3 Email提醒 137
4 i, v0 z' z; B$ M! d5.4 小结 1381 c, K, ?# q* m4 K) O$ e6 p {
9 n% j* l, q/ u- \
第6章 实战项目:基础爬虫 1396 E4 S! s1 z4 f7 _* e, A0 t
6.1 基础爬虫架构及运行流程 140
$ Q& S. |- v( b" D6.2 URL管理器 141
+ |6 x" w9 d2 D/ P6.3 HTML下载器 142
1 Z8 R0 a# M" L4 v# s N/ h6.4 HTML解析器 1433 G% Y% s' a( V5 Z
6.5 数据存储器 145- @& p: u! c8 J; R0 d
6.6 爬虫调度器 1460 Q, F7 G3 P" o/ @
6.7 小结 147/ J5 t4 w. D8 [, g- q" `( Z# I$ i
* T! |- X8 q! A; }2 G! a1 Q7 C第7章 实战项目:简单分布式爬虫 148+ z- l- z) V+ `0 U* A* } e! _
7.1 简单分布式爬虫结构 148
+ ]5 {- h# W9 j6 M- k6 m7.2 控制节点 149" A' k0 U; r2 D) @
7.2.1 URL管理器 1490 s) M5 T8 O! t2 B
7.2.2 数据存储器 151
0 ^! U8 d) I0 ]. U, r( K7.2.3 控制调度器 153
) s* s( F6 }& M/ |8 {7.3 爬虫节点 155
( y9 d; B' M8 V# v9 U, v7.3.1 HTML下载器 155
! B# P" N2 ?- K8 D# }7.3.2 HTML解析器 156
9 f1 s5 y8 M7 L- v4 w* u$ @1 x7.3.3 爬虫调度器 157
, u, O6 L7 ~+ I& n7.4 小结 159/ U. b" Y1 P/ y) r( S7 T
4 \4 A. q' ~ p# r
★ 中级篇3 c# i: g( o: Q/ ?, A( }# n+ H
3 [$ b0 [2 u) t, W: V0 e' H第8章 数据存储(数据库版) 162/ U% p p# J$ ~* a) \' E
8.1 SQLite 162* M3 c. ]* U/ d! m( U& v) w1 u( Z
8.1.1 安装SQLite 162- z' _, z- ?5 D0 h) e
8.1.2 SQL语法 163
/ v2 d+ l4 x, b: J7 r5 ^8 u! E8.1.3 SQLite增删改查 168) l1 e, H( i9 v6 V
8.1.4 SQLite事务 170
. s+ q8 h$ s5 l, Z: H3 H% G8.1.5 Python操作SQLite 171; P: H. {- i2 }: u3 R( n/ D7 n, y7 a
8.2 MySQL 174
/ d0 U, K. J' Q ?8.2.1 安装MySQL 174
4 p; S( B F- M) i8.2.2 MySQL基础 177
9 g- R4 l3 P ^4 H$ `8.2.3 Python操作MySQL 181
$ N8 c& D' p9 h! [8.3 更适合爬虫的MongoDB 1837 } j- a R- T1 _
8.3.1 安装MongoDB 184
5 `/ Y" k+ {/ |9 M8.3.2 MongoDB基础 187
' L$ R& \+ p) L' M, E/ Q! d8.3.3 Python操作MongoDB 194
8 e1 v5 H g4 Q2 I% F, `2 G2 E2 y8.4 小结 196) ?9 ?8 p5 H4 B9 M, o$ j/ B; c
0 V, m I9 e2 g, c# L
第9章 动态网站抓取 197
' l* a2 v: t1 t0 j8 o9.1 Ajax和动态HTML 197
- Z+ c+ k! K8 i; }" B7 q* V4 K) g9.2 动态爬虫1:爬取影评信息 198
1 k# {0 R2 X( f! d) Q2 w9.3 PhantomJS 207
& E- u7 l3 ~+ h. `+ M7 m9.3.1 安装PhantomJS 207
4 w3 }3 N) c% Q( S& H9 W7 K9.3.2 快速入门 208" [7 D) Y' {: _
9.3.3 屏幕捕获 2115 s7 k9 M: D8 l ?1 x# X
9.3.4 网络监控 2137 s: j8 H' |) \8 }. Q6 W4 y, A
9.3.5 页面自动化 2148 X x" f4 q2 q" a, i9 r6 ~- Y; z
9.3.6 常用模块和方法 215
% [* ^, [. y6 }4 g9.4 Selenium 218; k. z( v' F( s" b, o0 N; F
9.4.1 安装Selenium 219+ `$ T. c' q% m* o# E$ N/ C+ ?
9.4.2 快速入门 220' X4 @& F2 o* b: c+ F! R
9.4.3 元素选取 221
* |1 \) B; ^3 Y9 z% H0 l9.4.4 页面操作 2225 [: }* U; R5 m' g+ `. N
9.4.5 等待 225# W( ^7 A) A& j1 |& L) D: @
9.5 动态爬虫2:爬取去哪网 227
/ Q7 q3 z0 ]2 l) Z" h: X7 L9.6 小结 230! y: c$ Y* ] Z
, C! v! ?# N5 `% t5 W% N# L* X
第10章 Web端协议分析 231
/ z3 `, F6 |. o1 y8 x) f/ T10.1 网页登录POST分析 231: V4 K W- P' O
10.1.1 隐藏表单分析 231
0 j% X0 \, I% S. J8 W10.1.2 加密数据分析 234. S/ Y) S. k( I' \! I% i
10.2 验证码问题 246
) ?2 y1 E# V Y6 s10.2.1 IP代理 246
/ _) t* J% i8 d6 ?8 h/ o10.2.2 Cookie登录 249: G, R4 j% l# C( C: j
10.2.3 传统验证码识别 250
8 Z) z q2 H' H5 W2 s5 \10.2.4 人工打码 2511 G4 L& N2 Q+ v5 C
10.2.5 滑动验证码 2528 ~( F; j; [" Y! y! S
10.3 www>m>wap 252
- {4 H3 Z" q/ Z3 h# h8 H10.4 小结 2546 T2 X9 w- b7 ]0 ?* Z
4 ^: |. x! i8 a$ `
第11章 终端协议分析 255
0 B4 t# G7 l. B5 A11.1 PC客户端抓包分析 255
, B# u! \/ F8 ^; T% w3 T' D& x11.1.1 HTTP Analyzer简介 255
$ E. A+ p7 r3 f11.1.2 虾米音乐PC端API实战分析 257$ z% V4 _/ Y0 h0 y% y/ ~5 ~
11.2 App抓包分析 2597 q2 C+ X8 u5 e+ r# S% t6 B! L
11.2.1 Wireshark简介 259
' K2 w8 m8 E: E T0 c" x11.2.2 酷我听书App端API实战分析 266
) w& S4 R9 L2 ]11.3 API爬虫:爬取mp3资源信息 268
7 N5 _3 T) u. H( s11.4 小结 272 C, P* ?. [1 o& q! I& n: r X
& X+ H* v9 I: O第12章 初窥Scrapy爬虫框架 273# n* H0 R- `% P
12.1 Scrapy爬虫架构 2736 k9 A6 C. h# n+ Y
12.2 安装Scrapy 275
5 E1 |8 q1 t' k0 M D' N; v12.3 创建cnblogs项目 276( g# Q* F) m; [( p- [; u
12.4 创建爬虫模块 2772 S- q w( ^2 H" f0 Z: Q
12.5 选择器 278
! H! a' z: P1 p7 Y- ]5 _12.5.1 Selector的用法 278
8 k. z5 d# V# |* p5 c' g12.5.2 HTML解析实现 280, Q; h$ ~/ ~7 A, p' q9 D
12.6 命令行工具 282
) H' U, Q2 ~3 _- D12.7 定义Item 284& Z/ A) s% G- F
12.8 翻页功能 286, ] k& T5 b8 C( R
12.9 构建Item Pipeline 287
0 E+ s% d; n; r" ^12.9.1 定制Item Pipeline 287
* c+ |. ]0 V7 ?5 w2 {12.9.2 激活Item Pipeline 288
$ h0 E, E7 [- b$ _12.10 内置数据存储 288
8 U. k7 M* E8 I" q! Q! ~12.11 内置图片和文件下载方式 289
9 R9 Z5 C1 J( {$ u w; C6 u' U% i12.12 启动爬虫 294
! N0 N, W# j* m9 M8 k12.13 强化爬虫 297
2 @7 p0 G( B+ U2 U12.13.1 调试方法 297! b& K0 [' T0 n s' o
12.13.2 异常 299
|0 T! _, [, n12.13.3 控制运行状态 3007 `5 l- S9 w# P) ^. B+ R& V2 M
12.14 小结 3014 Z, Q) p8 e& B( v; \! X! P2 j
/ G9 H3 A: j: O
第13章 深入Scrapy爬虫框架 302/ x; l, p; C4 _
13.1 再看Spider 302& G5 M) N& ^" ?# w
13.2 Item Loader 308
( y: w- D1 T4 \' ?- E( ~& r; a+ [13.2.1 Item与Item Loader 3083 [3 y5 _( j% m6 b! ~. M
13.2.2 输入与输出处理器 3094 W7 V) ^; z9 q/ I
13.2.3 Item Loader Context 310
4 B$ x7 @+ m3 H0 T. \) ?13.2.4 重用和扩展Item Loader 311
/ ], L! _0 T# c/ m; @13.2.5 内置的处理器 312
; R" a1 C5 r! f7 }9 C13.3 再看Item Pipeline 314
: |8 }7 l$ U6 ~% L0 W! r% N13.4 请求与响应 315
# D( S! R* s5 ?9 b8 Y) q) u* g- z13.4.1 Request对象 315" H2 b2 h* m% V! m2 t6 o
13.4.2 Response对象 318
, ^# l% u+ a* j' C( r6 j: G13.5 下载器中间件 320" k5 c/ A: c$ n2 N; u4 x# V/ @
13.5.1 激活下载器中间件 320
7 B. M ]7 }) U: e3 [7 y/ W B6 Z+ g; t13.5.2 编写下载器中间件 321
% T* O' [/ x4 C! E) S/ w13.6 Spider中间件 324
4 c$ \6 |. x' ~5 g13.6.1 激活Spider中间件 3240 @4 f+ d* P! h) |
13.6.2 编写Spider中间件 325! d5 L% |6 r% ~$ U' o8 R8 M7 \
13.7 扩展 327
& P+ [# ^+ T e- y13.7.1 配置扩展 327# d4 _2 @. _9 b4 g4 D
13.7.2 定制扩展 328
! B3 V- h: B5 g5 {! a7 T* V13.7.3 内置扩展 332
7 U6 g1 R' h* }1 H I) f13.8 突破反爬虫 332
6 |* D- d! Q% |13.8.1 UserAgent池 3333 ^1 W4 y/ {2 c/ y# O
13.8.2 禁用Cookies 333
# V1 S1 d }/ {13.8.3 设置下载延时与自动限速 333
% ?0 A+ e- n4 h, E/ m+ |13.8.4 代理IP池 334
7 e3 }/ g8 ? f/ n! u13.8.5 Tor代理 334- Y, x1 S: p- I# y, ?+ {
13.8.6 分布式下载器:Crawlera 337# [# D7 v: I- z; @- W# `8 n0 T
13.8.7 Google cache 338/ O, a; @% ?7 H3 ~
13.9 小结 339
, u8 {9 z& h% O4 Q8 K
7 Z3 ^) b5 Z6 |( ]) U! C3 e; ?. v# A第14章 实战项目:Scrapy爬虫 340; a6 C, s# x% U6 t3 x
14.1 创建知乎爬虫 340: ?2 \; [3 X" W: b8 K' ]
14.2 定义Item 342
1 k1 k% B8 q6 @8 i14.3 创建爬虫模块 343! `4 h7 T, t! }! {" ~
14.3.1 登录知乎 343
. @# E0 d6 u# e14.3.2 解析功能 345& F( r# N; B5 Z. ^6 R4 T
14.4 Pipeline 351
7 F; ^6 e2 x5 `14.5 优化措施 352
# G" X: V) \) v14.6 部署爬虫 353
% C5 q" O4 ~$ M- O: I2 s* u14.6.1 Scrapyd 354
. V& {& b S( O& J! u14.6.2 Scrapyd—client 356
; [, _8 ^ p2 q; L2 B R% c. p1 Y14.7 小结 357" t' o, c: A" c9 \- R
, r. B' x" f, n* f0 F( k★ 深入篇
2 s5 m8 X( ^. Q6 U ^! d( w- N% W- s8 e. F# } p8 g6 R
第15章 增量式爬虫 360
" l: l# M. D# Y5 m15.1 去重方案 360
6 @ n8 y* }# g* A15.2 BloomFilter算法 361) S, w9 W" q% y7 X) S( X
15.2.1 BloomFilter原理 361
! n$ E" k( {; D) `% W15.2.2 Python实现BloomFilter 363, V) n' E' v! \6 _
15.3 Scrapy和BloomFilter 364& Q9 w5 F, N( U1 |
15.4 小结 3666 O3 k: ]( ~4 e: V+ O8 g+ Y4 }
' p5 {4 z' Z$ \6 u3 z7 D: x2 g
第16章 分布式爬虫与Scrapy 3675 f9 c/ m H. w9 ~/ L9 P' V R$ d
16.1 Redis基础 367/ T; T" t* k; ]
16.1.1 Redis简介 3673 d& U/ h* B4 t+ r5 _. a
16.1.2 Redis的安装和配置 368
! t( l1 w: ]4 j! [, N! v& ? h) x16.1.3 Redis数据类型与操作 3722 q) o- Y, A! d& x; |8 i4 j
16.2 Python和Redis 375
; F7 F5 |& Z' Y( k: d I16.2.1 Python操作Redis 375
6 h# D% c8 T: }4 F/ l! o" ]( L16.2.2 Scrapy集成Redis 384
/ g9 j4 }' S g& C0 E5 ?16.3 MongoDB集群 385
' f" ~1 A- x; |$ {$ ?7 Y16.4 小结 390: o/ {& {, N8 C( o
7 C8 x$ a, V3 D8 A第17章 实战项目:Scrapy分布式爬虫 391: G- m& W1 \6 W* }$ {. I
17.1 创建云起书院爬虫 391! `! e5 |/ H; P8 D3 M
17.2 定义Item 393% o' G/ l, \" g$ Q; n$ p* s! t
17.3 编写爬虫模块 394' B7 D/ F; L3 i: y
17.4 Pipeline 395, U/ A! x2 k% v6 k+ S
17.5 应对反爬虫机制 397% p. O" W* D: D& i" d, Z* F+ N
17.6 去重优化 400
7 a! C/ D( f) R" C6 L17.7 小结 4016 [% c7 e1 i' V0 M- i" z9 d5 l: s
" J, X+ z7 Y6 G2 A2 L& u第18章 人性化PySpider爬虫框架 403
0 M% _: I+ A# W$ v1 H& M' a18.1 PySpider与Scrapy 403
/ x' e, _- Y4 [( S- O18.2 安装PySpider 404
; y& F2 f) \, e18.3 创建豆瓣爬虫 405
( V9 U1 n2 s- n: {+ o8 e! N+ d18.4 选择器 409
# J& ?* x3 x) b0 R, F1 u# a, \0 Z18.4.1 PyQuery的用法 409
% s ]# V7 x9 M' u1 z18.4.2 解析数据 4110 Y5 g4 v- n" j; w# l
18.5 Ajax和HTTP请求 415
3 R/ W [. [. R18.5.1 Ajax爬取 415
2 Y6 \ ? Y) B6 F: L1 m18.5.2 HTTP请求实现 417
, `; W7 q8 N. C5 P; e2 Z; a4 B8 u18.6 PySpider和PhantomJS 4177 U7 `- g. ~% w2 _
18.6.1 使用PhantomJS 418. D9 b8 Y1 l1 U7 l/ W
18.6.2 运行 420, A& e c0 N5 v9 j: `
18.7 数据存储 420' r+ L9 G1 A( N* U
18.8 PySpider爬虫架构 4224 O1 }% g. {5 ? W H8 F% J5 H2 J( O3 q: k
18.9 小结 423
* W5 \+ {+ j* X) }2 ^4 Z/ i. M) v1 O+ _, C( F
|
|