[关闭]
@heavysheep 2017-02-15T10:14:24.000000Z 字数 2278 阅读 1069

广场舞数据优化文档

文档


需求:JAVA爬虫实现广场舞视频每日自动更新、清楚腐烂数据、去重等,不涉及UI和功能变动。
额外功能点:清晰度识别,缓存(周二会议讨论决定)
任务周期:2017年2月13日(周一) -- 2017年2月17日(周五)
人员:王子 康文根 沈吉祥

目标网站

主流网站包括:糖豆广场舞我要广场舞中国太极拳网99广场舞广场舞大全等。
各网站播放方式、内容格式各有不同,鉴于H5原生不支持flv,且IOS不支持flash控件无法通过embed播放swf文件,选用99广场舞作为抓爬首选网站(默认MP4,获取层级低),中国太极拳网作为扩充和备用(MP4、flv格式,网站不稳定,获取层级中)。

抓爬需求

QQ图片20170210181851.png-116.9kBimage_1b8jovv7p1a6e8u61inqm04168al.png-119.5kB

列表界面内(如图1)

没有舞队舞曲标签的数据,以空格为分割的第一元素为舞队,第二元素为舞曲(如图2)。

以上内容均可通过get方法访问获得的JSON获取,示例为:

  1. requests.get(url=r'http://www.999d.com/index.php', params={
  2. 'v': 'video', #类型
  3. 'tid': '0',
  4. 'type': 'new', #排序方式
  5. 'difficulty': 0,
  6. 'ajax': '1',
  7. '_': '1486721156085', #当前时间戳
  8. 'page': 1 #页面
  9. })

详情界面内(如图3)

image_1b8jpgq537l812k1tpa18skfph12.png-649.5kB

需要注意列表界面内核详情界面内的发布时间不相同,因此对这两个元素都进行抓取。
另外MP3音乐通过访问右下角舞曲音乐无法获得链接,需要在视频抓取完毕后进入另一界面对所有获得的视频再次抓取MP3外链地址。

进入页面解析获得的第一、第三视频都是网站广告,真正地址是webkit_playlist列表中的第二个。
QQ图片20170210182323.png-51.8kB

数据存储和处理

1.第一手数据完成提取后,直接存入mongoDB
2.访问mongoDB获取数据,进行清晰度识别、去重、清除腐烂数据等操作,决定对mySQL数据库的增、删、改等操作。
3.完成对mySQL的操作,并保留操作日志。

完成测试后,每日对数据进行一次更新。

IP代理

不背锅,等老王买了补。

数据处理中间件

本中间件搭载于出mongoDB和mySQL之间,用作对一手数据库做质量筛选以进入mySQL正式环境中。

Created with Raphaël 2.1.2mongoDB数据库获得上次导入mySQL时间戳后的新数据新数据外链列表与mySQL外链列表对比去重后导入,避免重复结果进入mySQLmySQL数据库MP4同名视频做MP3列表交集处理,以保证最新歌曲下载访问外链状态码是否为200操作完成循环访问3次,如果全部失败将数据从mySQL中删除。yesno
Created with Raphaël 2.1.2mongoDB数据库找到上次导入mySQL时间戳前的旧数据旧数据外链列表与mySQL外链列表对比后得到对于mySQL的补集(即:曾腐烂数据表)访问外链状态码是否为200访问成功,将该条数据插入mySQL操作完成访问失败,记录失败次数,到达30次时将数据从mongoDB中删除yesno

腐烂数据清理

从目前来看,99广场舞的外链属于永久外链,在该假设成立情况下,鉴于调用浏览器成本过高,使用访问外链检测state是否为200作为初步检测腐烂数据的方式。

在该假设不满足时,调用浏览器对mongoDB内视频永久循环检测,以及时淘汰腐烂数据。

去重

以外链作为检测去重的唯一值。

项目开发流程

02/1312:00Tue 1412:00Wed 1512:00Thu 1612:00Fri 1712:00Sat 18需求分析 文档编写 缓存可行性分析 编码测试编码测试发布验收项目确定爬虫搭建数据处理发布验收广场舞数据优化开发流程
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注