用python进行分布式网页数据抓取(一)——设计
这几天做一个小项目,分给我的模块是对于BOKECC体系网站的抓取。
从来没有用过python,这次来尝一下鲜,感觉还行~
BOKECC就是一个视频网站的解决方案,我的任务很简单,就是给定一个网址,我来抓取对应页面上的数据内容。
整个系统采用分布式架构,我来负责做爬虫节点。
简单来说就是整个系统可分布式部署,每个节点接收来自控制者的远程调用,独立完成任务,并向上级汇报完成情况。
这里采用暴露WebService的方式来提供接口。
功能需求点 |
概述 |
输入 |
提供webservice接口供主控调用,异步启动爬虫任务。 |
输出 |
1. 在正常接收、启动任务后立即给主控返回接收成功。 2. 在完成任务/任务失败后调用主控提供的回调接口。 3. 抓取成功后,将抓取数据保存至数据库。 |
错误处理 |
抓取异常情况下,应该将错误原因汇报给主控,并记录日志。 |
并发性需求 |
模块支持多线程并发调用。 |
BOKECC体系网站有非常多个,通过进行实际情况调研,发现各个页面在数据上有所不同(但大同小异),为了省事,我决定只用一套代码来爬取所有对应站点。那就要求我们的代码具有通用性。
另外,客户端要实现0配置,爬取的结果写入数据库。(数据库配置参与也应该由控制者——WEB接口调用者来决定)。所以我们在节点上维护一个数据库连接池。
大致流程如下:
在实际编码过程中也没有严格遵守此流程,进行了相应的扩展,不过大体如上。
日志记录设计:
日志条目 |
级别 |
记录信息 |
WebService接口被调用 |
Info |
调用方IP及各接口参数 |
主控身份校验失败 |
Warn |
调用方IP |
开始建立/更新数据库连接池 |
Info |
数据库参数 |
数据库连接失败 |
Error,Notify |
失败原因 |
数据库连接成功 |
Info |
|
开始启动爬虫任务 |
Debug |
|
开始抓取网页 |
Info |
URL |
一次网页抓取超时 |
Warn |
当前重试次数 |
一次网页抓取异常 |
Warn |
异常原因 |
重试范围内网页抓取失败 |
Error,Notify |
|
网页抓取成功 |
Debug |
|
开始内容匹配 |
Info |
|
正则表达式匹配失败 |
Error,Notify |
失败字段、失败原因 |
正则表达式匹配成功 |
Debug |
|
开始更新数据库 |
Info |
|
SQL操作 |
Debug |
SQL语句 |
更新数据库完成 |
Debug |
|
写数据库异常 |
Error,Notify |
当前执行的SQL语句,异常原因 |
任务成功 |
Info |
技术选型:
开发平台: windowsXP
部署平台: 跨平台
编程语言:python2.5
IDE+plug-in:MyEclipse 7.0 + pydev
具体使用的python技术:
功能 |
技术选型 |
网页抓取 |
urllib2 |
内容解析,正则表达 |
re |
WebService |
ZSI2.0 |
SOAP协议 |
SOAPpy(ZSI依赖) |
XML |
pyXML(ZSI依赖) |
Web服务器 |
ZSI自带SOAP SERVER 或Apache |
发布、部署 |
Windows平台:py2exe |
下面一节将进入正式编码阶段。
用python进行分布式网页数据抓取(一)——设计相关推荐
- 如何用python抓取文献_浅谈Python爬虫技术的网页数据抓取与分析
浅谈 Python 爬虫技术的网页数据抓取与分析 吴永聪 [期刊名称] <计算机时代> [年 ( 卷 ), 期] 2019(000)008 [摘要] 近年来 , 随着互联网的发展 , 如何 ...
- [Python爬虫] 三、数据抓取之Requests HTTP 库
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 一.urllib 模块 所谓网页抓取,就是把URL ...
- 网页数据抓取,关键在于抓取的准确性和应对海量数据时的快速反应
无论是互联网科技.大数据.还是云计算,关键都在于技术优势,技术的成本和门槛都很高,不是两三个人零成本就可以打造一个产品. 我们以网页数据抓取来说,一门基于web结构或基于浏览器可视化的数据获取技术,关 ...
- 网页数据抓取-网页实时数据抓取软件
网页数据抓取,随着社会的发展,互联网的普及,不管是企业还是个人都意识到数据的重要性.今天给大家分享一款免费的网页数据抓取软件.只要点点鼠标就能轻松采集你想要的内容不管是导出还是自动发布都支持!详细参考 ...
- 1.3 网页数据抓取
1.3 网页数据抓取 李沐 B站:https://space.bilibili.com/1567748478/channel/collectiondetail?sid=28144 课程主页:https ...
- 李沐【实用机器学习】1.3网页数据抓取
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.数据抓取工具 二.实例解析 总结 前言 网页数据抓取目标:在一个网站里面感兴趣的数据抓取出来 数据特点:噪点较多, ...
- 网页数据抓取之当当网
所谓"网页数据抓取",也称为网页数据采集,Web数据采集等等,就是从我们平时通过浏览器查看的web网页上来提取需要的数据信息,然后以结构化的方式存储到CSV.JSON.XML.AC ...
- [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...
- Python实现的淘宝直通车数据抓取(3)
商家那里给出的是一个有几千行的excel表,这里使用openpyxl来读取excel. class read_write: def __init__(self,token,cookiestr): se ...
最新文章
- 传闻,Google曾用股票来换取他的数学研究
- pcie 的bar和dma bar2
- mysql 获取工作日上一天的数据 环比MYSQL 两日期之间的工作日(除去周六日,不考虑节假日)
- MYSQL 取随机记录的方法
- 安全研究人受够!再公布WordPress 3大外挂漏洞
- 1138 Postorder Traversal (25 分)【难度: 一般 / 知识点: 建树】
- c++中的左移、右移运算
- QuartusII联合modelsim仿真时调用两个模块如何设置
- python获取屏幕文字_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)...
- julia常用矩阵函数_Julia系列教程3 数学运算 矩阵运算
- 深入理解C语言系列之函数传参的那些事儿(函数参数、指针、地址、数组)
- 如何在Windows环境下使用PyCharm开发PySpark
- linux 内核 内存管理 bootmem alloctor 的初始化
- 西电Pintos操作系统课程设计 实验四
- python如何期货交易_基于Python的股指期货交易系统
- mybatis pagehelper自定义count语句
- java解二次方程函数_Charting for Java Swing中的FunctionSeries
- cygwin中安装apt-cyg管理工具注意事项
- 房租,社会教给年轻人的第一课
- gym101431D(传说中的构造(呸))
热门文章
- eclipse死活不编译class文件之解决方法
- 解决屏幕分辨率太高,软件界面上的图标太小的问题
- IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)第四章
- 如何构建一个优秀的开发框架
- 英语提升利器之沙拉查词,Anki
- 驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
- RocketMQ报错总结
- python报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte,文本乱码解决方法
- 一个优秀的研发团队应该具备什么特征
- 百度地图轨迹(Andriod SDK)