学习PHP爬虫--《Webbots、Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)》

《Webbots、Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)》

译者序

前言

第一部分 基础概念和技术

第1章 本书主要内容3

1.1 发现互联网的真正潜力3

1.2 对开发者来说3

1.2.1 网络机器人开发者是紧缺人才4

1.2.2 编写网络机器人是有趣的4

1.2.3 网络机器人利用了“建设性黑客”技术4

1.3 对企业管理者来说5

1.3.1 为业务定制互联网5

1.3.2 充分利用公众对网络机器人的经验不足5

1.3.3 事半功倍6

1.4 结论6

第2章 网络机器人项目创意7

2.1 浏览器局限性的启发7

2.1.1 聚合并过滤相关信息的网络机器人7

2.1.2 解释在线信息的网络机器人8

2.1.3 个人代理网络机器人9

2.2 从疯狂的创意开始9

2.2.1 帮助繁忙的人解脱10

2.2.2 自动执行,节省开支10

2.2.3 保护知识产权10

2.2.4 监视机会11

2.2.5 在网站上验证访问权限11

2.2.6 创建网上剪报服务11

2.2.7 寻找未授权的Wi-Fi网络12

2.2.8 跟踪网站技术12

2.2.9 让互不兼容的系统通信12

2.3 结论13

第3章 下载网页14

3.1 当它们是文件,而不是网页14

3.2 用PHP的内置函数下载文件15

3.2.1 用fopen()和fgets()下载文件15

3.2.2 用file()函数下载文件17

3.3 PHP/CURL库介绍18

3.3.1 多种传输协议18

3.3.2 表单提交19

3.3.3 基本认证技术19

3.3.4 cookie19

3.3.5 重定向19

3.3.6 代理名称欺诈19

3.3.7 上链管理20

3.3.8 套接字管理20

3.4 安装PHP/CURL20

3.5 LIB_http库21

3.5.1 熟悉默认值21

3.5.2 使用LIB_http21

3.5.3 了解更多HTTP标头信息24

3.5.4 检查LIB_http的源代码25

3.6 结论25

第4章 基本解析技术26

4.1 内容与标签相混合26

4.2 解析格式混乱的HTML文件26

4.3 标准解析过程27

4.4 使用LIB_parse库27

4.4.1 用分隔符分解字符串:split_string()函数27

4.4.2 提取分隔符之间的部分:return_between()函数28

4.4.3 将数据集解析到数组之中:parse_array()函数29

4.4.4 提取属性值:get_attribute()函数30

4.4.5 移除无用文本:remove()函数32

4.5 有用的PHP函数32

4.5.1 判断一个字符串是否在另一个字符串里面32

4.5.2 用一个字符串替换另一个字符串中的一部分33

4.5.3 解析无格式文本33

4.5.4 衡量字符串的相似度34

4.6 结论34

4.6.1 别相信编码混乱的网页34

4.6.2 小步解析35

4.6.3 不要在调试的时候渲染解析结果35

4.6.4 少用正则表达式35

第5章 使用正则表达式的高级解析技术36

5.1 模式匹配——正则表达式的关键36

5.2 PHP的正则表达式类型36

5.2.1 PHP正则表达式函数37

5.2.2 与PHP内置函数的相似之处38

5.3 从例子中学习模式匹配39

5.3.1 提取数字39

5.3.2 探测字符串序列39

5.3.3 字母字符匹配40

5.3.4 通配符匹配40

5.3.5 选择匹配41

5.3.6 分组和范围匹配的正则表达式41

5.4 与网络机器人开发者相关的正则表达式41

5.4.1 提取电话号码42

5.4.2 下一步学习什么45

5.5 何时使用正则表达式46

5.5.1 正则表达式的长处46

5.5.2 模式匹配用于解析网页的劣势46

5.5.3 哪个更快,正则表达式还是PHP的内置函数48

5.6 结论48

第6章 自动表单提交49

6.1 表单接口的反向工程50

6.2 表单处理器、数据域、表单方法和事件触发器50

6.2.1 表单处理器50

6.2.2 数据域51

6.2.3 表单方法52

6.2.4 多组件编码54

6.2.5 事件触发器54

6.3 无法预测的表单55

6.3.1 JavaScript能在提交之前修改表单55

6.3.2 表单HTML代码通常无法阅读55

6.3.3 cookie在表单里不存在,却会影响其操作55

6.4 分析表单55

6.5 结论59

6.5.1 不要暴露身份59

6.5.2 正确模拟浏览器59

6.5.3 避免表单错误60

第7章 处理大规模数据61

7.1 组织数据61

7.1.1 命名规范61

7.1.2 在结构化文件里存储数据62

7.1.3 在数据库里存储文本数据64

7.1.4 在数据库里存储图片66

7.1.5 用数据库,还是用文件系统68

7.2 减小数据规模68

7.2.1 保存图片文件的地址68

7.2.2 压缩数据68

7.2.3 移除格式信息71

7.3 生成图片的缩略图72

7.4 结论73

第二部分 网络机器人项目

第8章 价格监控网络机器人77

8.1 目标网站77

8.2 设计解析脚本78

8.3 初始化以及下载目标网页79

8.4 进一步探讨83

第9章 图片抓取网络机器人84

9.1 图片抓取网络机器人例子84

9.2 创建图片抓取网络机器人85

9.2.1 二进制安全下载过程86

9.2.2 目录结构87

9.2.3 主脚本87

9.3 进一步探讨90

9.4 结论90

第10章 链接校验网络机器人91

10.1 创建链接校验网络机器人91

10.1.1 初始化网络机器人并下载目标网页92

10.1.2 设置页面基准92

10.1.3 提取链接93

10.1.4 运行校验循环93

10.1.5 生成URL完整路径93

10.1.6 下载全链接路径94

10.1.7 展示页面状态95

10.2 运行网络机器人95

10.2.1 LIB_http_codes96

10.2.2 LIB_resolve_addresses96

10.3 进一步探讨97

第11章 搜索排名检测网络机器人98

11.1 搜索结果页介绍99

11.2 搜索排名检测网络机器人做什么工作100

11.3 运行搜索排名检测网络机器人100

11.4 搜索排名检测网络机器人的工作原理101

11.5 搜索排名检测网络机器人脚本101

11.5.1 初始化变量102

11.5.2 开始循环102

11.5.3 获取搜索结果103

11.5.4 解析搜索结果103

11.6 结论106

11.6.1 对数据源要厚道106

11.6.2 搜索网站对待网络机器人可能会不同于浏览器106

11.6.3 爬取搜索引擎不是好主意106

11.6.4 熟悉Google API107

11.7 进一步探讨107

第12章 信息聚合网络机器人108

12.1 给网络机器人选择数据源108

12.2 信息聚合网络机器人举例109

12.2.1 熟悉RSS源109

12.2.2 编写信息聚合网络机器人111

12.3 给信息聚合网络机器人添加过滤机制114

12.4 进一步探讨115

第13章 FTP网络机器人116

13.1 FTP网络机器人举例116

13.2 PHP和FTP118

13.3 进一步探讨119

第14章 阅读电子邮件的网络机器人120

14.1 POP3协议120

14.1.1 登录到POP3邮件服务器120

14.1.2 从POP3邮件服务器上读取邮件121

14.2 用网络机器人执行POP3命令123

14.3 进一步探讨125

14.3.1 电子邮件控制的网络机器人125

14.3.2 电子邮件接口125

第15章 发送电子邮件的网络机器人127

15.1 电子邮件、网络机器人以及垃圾邮件127

15.2 使用SMTP和PHP发送邮件128

15.2.1 配置PHP发送邮件128

15.2.2 使用mail()函数发送电子邮件129

15.3 编写发送电子邮件通知的网络机器人130

15.3.1 让合法的邮件不被过滤掉132

15.3.2 发送HTML格式的电子邮件132

15.4 进一步探讨134

15.4.1 使用回复邮件剪裁访问列表134

15.4.2 使用电子邮件作为你的网络机器人运行的通知134

15.4.3 利用无线技术134

15.4.4 编写发送短信的网络机器人135

第16章 将一个网站转变成一个函数136

16.1 编写一个函数接口136

16.1.1 定义函数接口137

16.1.2 分析目标网页137

16.1.3 使用describe_zipcode()函数140

16.2 结论141

16.2.1 资源分发142

16.2.2 使用标准接口142

16.2.3 设计定制的轻量级“Web服务”142

第三部分 高级设计技巧

第17章 蜘蛛145

17.1 蜘蛛的工作原理145

17.2 蜘蛛脚本示例146

17.3 LIB_simple_spider149

17.3.1 harvest_links()149

17.3.2 archive_links()149

17.3.3 get_domain()150

17.3.4 exclude_link()150

17.4 使用蜘蛛进行实验152

17.5 添加载荷152

17.6 进一步探讨153

17.6.1 在数据库中保存链接153

17.6.2 分离链接和载荷153

17.6.3 在多台计算机上分配任务153

17.6.4 管理页面请求154

第18章 采购机器人和秒杀器155

18.1 采购机器人的原理155

18.1.1 获取采购标准155

18.1.2 认证买家155

18.1.3 核对商品156

18.1.4 评估购物触发条件156

18.1.5 执行购买157

18.1.6 评估结果157

18.2 秒杀器的原理157

18.2.1 获取采购标准158

18.2.2 认证竞拍者158

18.2.3 核对拍卖商品158

18.2.4 同步时钟158

18.2.5 竞价时间159

18.2.6 提交竞价160

18.2.7 评估结果160

18.3 测试自己的网络机器人和秒杀器160

18.4 进一步探讨160

18.5 结论161

第19章 网络机器人和密码学162

19.1 设计使用加密的网络机器人162

19.1.1 SSL和PHP内置函数163

19.1.2 加密和PHP/CURL163

19.2 网页加密的简要概述163

19.3 结论164

第20章 认证165

20.1 认证的概念165

20.1.1 在线认证的类型165

20.1.2 用多种方式加强认证166

20.1.3 认证和网络机器人166

20.2 示例脚本和实践页面166

20.3 基本认证167

20.4 会话认证168

20.4.1 使用cookie会话的认证169

20.4.2 使用查询会话进行认证172

20.5 结论174

第21章 高级cookie管理175

21.1 cookie的工作原理175

21.2 PHP/CURL和cookie177

21.3 网络机器人设计中面临的cookie难题178

21.3.1 擦除临时性cookie178

21.3.2 管理多用户的cookie178

21.4 进一步探讨179

第22章 计划运行网络机器人和蜘蛛180

22.1 为网络机器人配置计划任务180

22.2 Windows XP任务调度程序181

22.2.1 计划网络机器人按日运行181

22.2.2 复杂的计划182

22.3 Windows 7任务调度程序184

22.4 非日历事件触发器186

22.5 结论188

22.5.1 如何决定网络机器人的最佳运行周期188

22.5.2 避免单点故障188

22.5.3 在计划中加入变化性188

第23章 使用浏览器宏抓取怪异的网站189

23.1 高效网页抓取的阻碍190

23.1.1 AJAX190

23.1.2 怪异的JavaScript和cookie行为190

23.1.3 Flash190

23.2 使用浏览器宏解决网页抓取难题191

23.2.1 浏览器宏的定义191

23.2.2 模拟浏览器的终极网络机器人191

23.2.3 安装和使用iMacros191

23.2.4 创建第一个宏192

23.3 结论197

23.3.1 宏的必要性197

23.3.2 其他用途197

第24章 修改iMacros198

24.1 增强iMacros的功能198

24.1.1 不使用iMacros脚本引擎的原因198

24.1.2 创建动态宏199

24.1.3 自动装载iMacros202

24.2 进一步探讨204

第25章 部署和扩展205

25.1 一对多环境205

25.2 一对一环境206

25.3 多对多环境206

25.4 多对一环境206

25.5 扩展和拒绝服务攻击207

25.5.1 简易的网络机器人也会产生大量数据207

25.5.2 目标的低效207

25.5.3 过度扩展的弊端207

25.6 创建多个网络机器人的实例208

25.6.1 创建进程208

25.6.2 利用操作系统208

25.6.3 在多台计算机上分发任务208

25.7 管理僵尸网络209

25.8 进一步探讨215

第四部分 拓展知识

第26章 设计隐蔽的网络机器人和蜘蛛219

26.1 设计隐蔽网络机器人的原因219

26.1.1 日志文件219

26.1.2 日志监控软件222

26.2 模拟人类行为实现隐蔽222

26.2.1 善待资源222

26.2.2 在繁忙的时刻运行网络机器人222

26.2.3 在每天不同时刻运行网络机器人223

26.2.4 不要在假期和周末运行网络机器人223

26.2.5 使用随机的延迟时间223

26.3 结论223

第27章 代理226

27.1 代理的概念226

27.2 虚拟世界中的代理226

27.3 网络机器人开发者使用代理的原因226

27.3.1 使用代理实现匿名227

27.3.2 使用代理改变位置229

27.4 使用代理服务器229

27.4.1 在浏览器中使用代理229

27.4.2 通过PHP/CURL使用代理230

27.5 代理服务器的类型230

27.5.1 公共代理230

27.5.2 Tor232

27.5.3 商业代理234

27.6 结论234

27.6.1 匿名是过程,不是特性234

27.6.2 创建自己的代理服务235

第28章 编写容错的网络机器人236

28.1 网络机器人容错的类型236

28.1.1 适应URL变化236

28.1.2 适应页面内容的变化240

28.1.3 适应表单的变化242

28.1.4 适应cookie管理的变化243

28.1.5 适应网络中断和网络拥堵243

28.2 错误处理器244

28.3 进一步探讨245

第29章 设计受网络机器人青睐的网站246

29.1 针对搜索引擎蜘蛛优化网页246

29.1.1 定义明确的链接246

29.1.2 谷歌轰炸和垃圾索引247

29.1.3 标题标签247

29.1.4 元标签247

29.1.5 标头标签248

29.1.6 图片的alt属性248

29.2 阻碍搜索引擎蜘蛛的网页设计技巧248

29.2.1 JavaScript249

29.2.2 非ASCII内容249

29.3 设计纯数据接口249

29.3.1 XML249

29.3.2 轻量级数据交换251

29.3.3 简单对象访问协议253

29.3.4 表征状态转移254

29.4 结论255

第30章 消灭蜘蛛256

30.1 合理地请求256

30.1.1 创建服务协议条款257

30.1.2 使用robots.txt文件257

30.1.3 使用robots元标签258

30.2 创造障碍258

30.2.1 选择性地允许特定的网页代理259

30.2.2 使用混淆259

30.2.3 使用cookie、加密、JavaScript和重定向259

30.2.4 认证用户260

30.2.5 频繁升级网站260

30.2.6 在其他媒体中嵌入文本260

30.3 设置陷阱261

30.3.1 创建蜘蛛陷阱261

30.3.2 处理不速之客的方法261

30.4 结论262

第31章 远离麻烦263

31.1 尊重264

31.2 版权264

31.2.1 请善用资源264

31.2.2 不要纸上谈兵265

31.3 侵犯动产267

31.4 互联网法律268

31.5 结论269

附录A PHP/CURL参考270

附录B 状态码277

附录C 短信网关280

时间: 2024-10-16 19:07:09

学习PHP爬虫--《Webbots、Spiders和Screen Scrapers:技术解析与应用实践(原书第2版)》的相关文章

学习《Oracle PL/SQL 实例讲解 原书第5版》----创建账户

通过readme.pdf创建student账户. 以下用sys账户登录时都是sysdba. 一.PL/SQL 登录oracle. SYS/123  AS SYSDBA 账户名:sys:密码:123:作为sysdba角色登录. 二.查询DEFAULT TABLESPACE和TEMPORIRY TABLESPACE. SELECT tablespace_name FROM dba_tablespaces ORDER BY tablespace_name; 注:tablespaces are area

操作系统精髓与设计原理(原书第6版)——学习笔记(9)

 2.5.4 客户/服务器模型 Windows操作系统服务.受保护子系统和应用程序都采用客户/服务器计算模型构造,客户/服务器模型是分布式计算中的一种常用模型. 客户/服务器结构的优点如下: 简化了执行体.可以在用户态服务器中构造各种各样的API,而不会有任何冲突或重复:可以很容易地加入新的API. 提高了可靠性.每个新的服务运行在内核之外,有自己的存储空间,这样可以免受其他服务的干扰,单个客户的失败不会使操作系统的其余部分崩溃. 为应用程序与服务间通过RPC调用进行通信提供了一致的方法,且

学习《Oracle PL/SQL 实例讲解 原书第5版》---创建student schema

接上篇,运行脚本createStudent.sql后结果不符. 又运行了一遍rebuildStudent.sql就好了. 图: 原来是这样的,还以为是语言问题: 额,本来是打算截图的.但是发现没问题了.可能是运行过rebuildStudent.sql后,修改了表结构吧.之前的问题是:日期格式不对.现在没问题了.就这样吧. 附StudentSchema 下载地址:http://www.informit.com/store/oracle-pl-sql-by-example-9780133796780

学习资料:深入理解计算机系统_原书第三版_文字版非扫描

计算机系统经典教材!文字版,非扫描! 链接:https://pan.baidu.com/s/1DbohK9MUKVtZCS5zeWurhA提取码:qlmc 如需要其它资料,可邮箱[email protected]联系我. 原文地址:https://www.cnblogs.com/onepublic/p/11491397.html

学习TF:《TensorFlow技术解析与实战》PDF+代码

TensorFlow 是谷歌公司开发的深度学习框架,也是目前深度学习的主流框架之一.<TensorFlow技术解析与实战>从深度学习的基础讲起,深入TensorFlow框架原理.模型构建.源代码分析和网络实现等各个方面.分为基础篇.实战篇和提高篇三部分.基础篇讲解人工智能的入门知识,深度学习的方法,TensorFlow的基础原理.系统架构.设计理念.编程模型.常用API.批标准化.模型的存储与加载.队列与线程,实现一个自定义操作,并进行TensorFlow源代码解析,介绍卷积神经网络(CNN)

python学习之爬虫一

一,爬虫原理: 通过模拟浏览器的行为 自动从网上获得需要的数据 二,爬虫的流程 1,发送request请求给某个URL : 2,获得返回的response 解析 得到需要的数据 再根据自己的需要进行各种处理 三,具体的实现代码 3.1发送request请求分2种:get 和 post  ,这里使用的是python3 使用的模块是requests ,可使用pip3 install requests(pip也行 只要你的python安装目录下的scripts文件夹里既有pip.exe 又有pip3.

关于在学习python爬虫时的学习记录

最近学习python3爬虫,看的是这位博主的博客,不得不说,是真的厉害,通俗易懂^?_?^ 我要学习的还有很多-从基本的python知识,我就被难倒了- 哎,记录下我的盲点- 花了近一个钟头测试出来的结果. 在爬取相关的html时,text ≠ text[0] 后者是正确的.我一直以为不加的效果也是一样的结果,在我理解看来就是从头开始的,即从0到尾的所有相关的内容,实际上我的理解与相关的python基础不谋而和,可能是爬虫就需要如此的?我就默认好了- 在python中的方法后面的()是不可省去的

爬虫学习 08.Python网络爬虫之图片懒加载技术、selenium和PhantomJS

爬虫学习 08.Python网络爬虫之图片懒加载技术.selenium和PhantomJS 引入 今日概要 图片懒加载 selenium phantomJs 谷歌无头浏览器 知识点回顾 验证码处理流程 今日详情 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding:utf-8 -*- import requests from lxml import

Python爬虫之豆瓣-新书速递-图书解析

1- 问题描述 抓取豆瓣“新书速递”[1]页面下图书信息(包括书名,作者,简介,url),将结果重定向到txt文本文件下. 2- 思路分析[2] Step1 读取HTML Step2 Xpath遍历元素和属性 3- 使用工具 Python,lxml模块,requests模块 4- 程序实现 1 # -*- coding: utf-8 -*- 2 from lxml import html 3 import requests 4 5 6 page = requests.get('http://bo