SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Web 爬虫那些事
屌丝玩开源系列之二
黄亿华
什么是爬虫
下载页面,获取内容
用途
搜索引擎
丰富业务数据
数据分析
审核
自动化测试
从“博客搬家”开始
流程代码
数量越来越多
每个站点重写一遍!
开发 / 测试 /debug...
一天以上的开发时间
50 多家博客支持
更新维护的成本
不成熟的尝试
BlogTransfer FrameWork (in Diandian)
JSON config ,动态发布
开发量:一天 => 半小时
扩展性差
代码难以维护 ( 当时水平不行! )
思考 : 何为框架?
何为框架?
程序 = 数据结构 + 算法
算法 = 逻辑 + 控制
框架:处理控制,让应用只关心逻辑
我的理解:
框架:对领域业务做抽象,封装公共部分,
暴露易变逻辑
一年之后,重写
第一理念:模块化
参考 Scrapy
Downloader/Scheduler/Spiders/ItemPipeline

第二理念:高度可定制
面向接口
第三理念:站在巨人的肩膀上
运用已有工具
爬虫的生命周期
页面下载
Url 发现 / 过滤 / 管理
抽取数据
持久化
流程抽象
爬虫的生命周期
页面下载
Url 发现 / 过滤 / 管理
抽取数据
持久化
页面下载
模拟 http 请求
模拟 http 头
Referer/User-Agent/Cookie
连接复用 / 长连接
gzip
页面下载 - 工具

URLConnection
jsoup
HttpClient
页面下载 - 动态渲染
JS 渲染的页面,纯 Html 无能为力
通过 ajax 抓数据
模拟浏览器
selenium
phantomjs
页面下载 - 黑魔法
页面下载 - 黑魔法
突破反抓取
伪造一切能伪造的
模拟 http 头
Referer/User-Agent/Cookie
Oh no!
页面下载 - 黑魔法
知己知彼
如何判断
用浏览器访问 ...
403/ 验证码 / 错误页面
页面下载 - 黑魔法

换 IP
成本最低的 -ISP 自动拨号 ...
大量代理 -TOR
黑魔法 - 工具

WiredShark
Now you have MockSocksTM@me
爬虫的生命周期
页面下载
URL 发现 / 过滤 / 管理
抽取数据
持久化
抓取页面管理

管理什么?
待抓取队列
已抓取集合
抓取页面管理
URL 陷阱
simhash
海量 url
Bloom-Filter
sharding
爬虫的生命周期
页面下载
URL 发现 / 过滤 / 管理
抽取数据
持久化
数据抽取
HTML=> 结构化数据
正则表达式
XPath
CSS Selector
数据抽取
工具
jsoup
htmlcleaner
saxon xpath2.0 xquery xlst...
xoupTM@me
持久化

文件系统 / 关系数据库 /nosql
Pipeline
WebMagic 现状

https://github.com/code4craft/webmagic
简单 / 多线程 / 分布式
便捷的 API
已有多个公司在生产环境应用
下一步
WebMagic-Avalon
脚本化 & 可传播
管理后台
脚本分享平台
脚本化
平台 & 语言无关
JRuby&Rhino
管理后台

定时管理 / 配置
持久化
集群管理 ...
脚本分享平台

再也不用重复开发 ...
或许 ... 还有盈利模式
心得

有想法就实现并分享出来
依靠社区的力量
Thanks!

https://github.com/code4craft/webmagic
好评就给个 star 吧!

Weitere ähnliche Inhalte

Was ist angesagt?

喬叔 Elasticsearch Index 管理技巧與效能優化
喬叔 Elasticsearch Index 管理技巧與效能優化喬叔 Elasticsearch Index 管理技巧與效能優化
喬叔 Elasticsearch Index 管理技巧與效能優化Joe Wu
 
微服務的基礎建設 - Service Discovery, Andrew Wu
微服務的基礎建設 - Service Discovery, Andrew Wu微服務的基礎建設 - Service Discovery, Andrew Wu
微服務的基礎建設 - Service Discovery, Andrew WuAndrew Wu
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構Andrew Wu
 
淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享Tun-Yu Chang
 
Getting started with test automation
Getting started with test automationGetting started with test automation
Getting started with test automationIvan Wei
 
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀Andrew Wu
 
Monitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - ConsulMonitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - ConsulAndrew Wu
 
前端性能测试
前端性能测试前端性能测试
前端性能测试tbmallf2e
 
Javascript training
Javascript trainingJavascript training
Javascript training敏军 李
 
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案美团技术团队
 
Web development overview
Web development overviewWeb development overview
Web development overviewWei Sun
 
应用开发一般工作流程和注意
应用开发一般工作流程和注意应用开发一般工作流程和注意
应用开发一般工作流程和注意cucued
 
Lamp架构下的web开发
Lamp架构下的web开发Lamp架构下的web开发
Lamp架构下的web开发ops_bd
 
淘宝网前端开发面试题
淘宝网前端开发面试题 淘宝网前端开发面试题
淘宝网前端开发面试题 Lumend
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.comHo Kim
 
MongoDB in SNS
MongoDB in SNSMongoDB in SNS
MongoDB in SNSkidrane
 
前端工程化与工具链实践
前端工程化与工具链实践前端工程化与工具链实践
前端工程化与工具链实践ucarticle
 
构建可扩展的静态资源管理系统
构建可扩展的静态资源管理系统构建可扩展的静态资源管理系统
构建可扩展的静态资源管理系统Webrebuild
 

Was ist angesagt? (18)

喬叔 Elasticsearch Index 管理技巧與效能優化
喬叔 Elasticsearch Index 管理技巧與效能優化喬叔 Elasticsearch Index 管理技巧與效能優化
喬叔 Elasticsearch Index 管理技巧與效能優化
 
微服務的基礎建設 - Service Discovery, Andrew Wu
微服務的基礎建設 - Service Discovery, Andrew Wu微服務的基礎建設 - Service Discovery, Andrew Wu
微服務的基礎建設 - Service Discovery, Andrew Wu
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構與大師對談: 轉移到微服務架構必經之路~ 系統與資料庫重構
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
 
淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享淺談RESTful API認證 Token機制使用經驗分享
淺談RESTful API認證 Token機制使用經驗分享
 
Getting started with test automation
Getting started with test automationGetting started with test automation
Getting started with test automation
 
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀大規模微服務導入 - #1, 從零開始的系統架構設計概觀
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
 
Monitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - ConsulMonitoring Tools 大亂鬥 - Consul
Monitoring Tools 大亂鬥 - Consul
 
前端性能测试
前端性能测试前端性能测试
前端性能测试
 
Javascript training
Javascript trainingJavascript training
Javascript training
 
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
 
Web development overview
Web development overviewWeb development overview
Web development overview
 
应用开发一般工作流程和注意
应用开发一般工作流程和注意应用开发一般工作流程和注意
应用开发一般工作流程和注意
 
Lamp架构下的web开发
Lamp架构下的web开发Lamp架构下的web开发
Lamp架构下的web开发
 
淘宝网前端开发面试题
淘宝网前端开发面试题 淘宝网前端开发面试题
淘宝网前端开发面试题
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.com
 
MongoDB in SNS
MongoDB in SNSMongoDB in SNS
MongoDB in SNS
 
前端工程化与工具链实践
前端工程化与工具链实践前端工程化与工具链实践
前端工程化与工具链实践
 
构建可扩展的静态资源管理系统
构建可扩展的静态资源管理系统构建可扩展的静态资源管理系统
构建可扩展的静态资源管理系统
 

Ähnlich wie Web爬虫那点事

信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressAppzhoujg
 
淘宝网前端应用与发展
淘宝网前端应用与发展淘宝网前端应用与发展
淘宝网前端应用与发展taobao.com
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
实习生答辩Finally
实习生答辩Finally实习生答辩Finally
实习生答辩FinallyMars007
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 yangdj
 
Dreaming Infrastructure
Dreaming InfrastructureDreaming Infrastructure
Dreaming Infrastructurekyhpudding
 
赶集团购开发总结4
赶集团购开发总结4赶集团购开发总结4
赶集团购开发总结4yangdj
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails serverMichael Chen
 
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器iflytek
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用luolonghao
 
前端杂谈
前端杂谈前端杂谈
前端杂谈salinet
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》easychen
 
价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流hizhubo
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2daoopp
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平drewz lin
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较Adam Lu
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍areyouok
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍areyouok
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍topgeek
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-showleneli
 

Ähnlich wie Web爬虫那点事 (20)

信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
 
淘宝网前端应用与发展
淘宝网前端应用与发展淘宝网前端应用与发展
淘宝网前端应用与发展
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
实习生答辩Finally
实习生答辩Finally实习生答辩Finally
实习生答辩Finally
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
 
Dreaming Infrastructure
Dreaming InfrastructureDreaming Infrastructure
Dreaming Infrastructure
 
赶集团购开发总结4
赶集团购开发总结4赶集团购开发总结4
赶集团购开发总结4
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails server
 
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
 
富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用富文本编辑器在互联网上的应用
富文本编辑器在互联网上的应用
 
前端杂谈
前端杂谈前端杂谈
前端杂谈
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
 
价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流价值中国网站开发、管理经验探讨、分享、交流
价值中国网站开发、管理经验探讨、分享、交流
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
 

Web爬虫那点事