设为首页 收藏本站
查看: 649|回复: 0

[经验分享] 用python进行分布式网页数据抓取(一)——设计

[复制链接]

尚未签到

发表于 2017-5-6 09:57:36 | 显示全部楼层 |阅读模式
  这几天做一个小项目,分给我的模块是对于BOKECC体系网站的抓取。
  从来没有用过python,这次来尝一下鲜,感觉还行~
  BOKECC就是一个视频网站的解决方案,我的任务很简单,就是给定一个网址,我来抓取对应页面上的数据内容。
  整个系统采用分布式架构,我来负责做爬虫节点。
DSC0000.gif

  简单来说就是整个系统可分布式部署,每个节点接收来自控制者的远程调用,独立完成任务,并向上级汇报完成情况。
  这里采用暴露WebService的方式来提供接口。
功能需求点
概述
输入
提供webservice接口供主控调用,异步启动爬虫任务。
输出
1. 在正常接收、启动任务后立即给主控返回接收成功。
2. 在完成任务/任务失败后调用主控提供的回调接口。
3. 抓取成功后,将抓取数据保存至数据库。
错误处理
抓取异常情况下,应该将错误原因汇报给主控,并记录日志。
并发性需求
模块支持多线程并发调用。



  BOKECC体系网站有非常多个,通过进行实际情况调研,发现各个页面在数据上有所不同(但大同小异),为了省事,我决定只用一套代码来爬取所有对应站点。那就要求我们的代码具有通用性。
  另外,客户端要实现0配置,爬取的结果写入数据库。(数据库配置参与也应该由控制者——WEB接口调用者来决定)。所以我们在节点上维护一个数据库连接池。
  大致流程如下:
DSC0001.gif


在实际编码过程中也没有严格遵守此流程,进行了相应的扩展,不过大体如上。


日志记录设计:



日志条目
级别
记录信息
WebService接口被调用
Info
调用方IP及各接口参数
主控身份校验失败
Warn
调用方IP
开始建立/更新数据库连接池
Info
数据库参数
数据库连接失败
ErrorNotify
失败原因
数据库连接成功
Info

开始启动爬虫任务
Debug

开始抓取网页
Info
URL
一次网页抓取超时
Warn
当前重试次数
一次网页抓取异常
Warn
异常原因
重试范围内网页抓取失败
ErrorNotify

网页抓取成功
Debug

开始内容匹配
Info

正则表达式匹配失败
ErrorNotify
失败字段、失败原因
正则表达式匹配成功
Debug

开始更新数据库
Info

SQL操作
Debug
SQL语句
更新数据库完成
Debug

写数据库异常
ErrorNotify
当前执行的SQL语句,异常原因
任务成功
Info


技术选型:


开发平台: windowsXP
部署平台: 跨平台
编程语言:python2.5
IDE+plug-inMyEclipse 7.0 + pydev

具体使用的python技术:

功能
技术选型
网页抓取
urllib2
内容解析,正则表达
re
WebService
ZSI2.0
SOAP协议
SOAPpy(ZSI依赖)
XML
pyXML(ZSI依赖)
Web服务器
ZSI自带SOAP SERVER Apache
发布、部署
Windows平台:py2exe
  下面一节将进入正式编码阶段。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373662-1-1.html 上篇帖子: python:iteye上2道面试题解答 下篇帖子: Learn Python The Hard Way学习(33)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表