微博是一种新媒体和通信工具,上面有大量,首先需要将微博的内容抓取下来。单从微博的网页结构来说,上面的数据具有很规整的语义结构和元数据,所以,对于这

种旨在结构化网页数据的抓取工具来说,抓取微博的内容很容易。但是,从微博网站采用的编程技术来说,抓取微博又有很多障碍,最大的障碍是基于

Javascript/JS的AJAX程序框架,导致网络爬虫很难在微博网站上爬行和抓取数据。但是,MetaSeeker具有很强的AJAX内容抓取能

力,我们在《抓取AJAX网站》一文已经有所体验。本文将以抓取新浪微博为例,讲解MetaSeeker的一些重要特性。本文讲解的方法同样适用于抓取腾讯微博。

假设有下面的抓取目标:

目的:抓取新浪微博,重复抓取,持续监控,进行Web数据挖掘,用于建设。

主题名:demo_sina_weibo

抓取目标

从微博列表中抓取下面的内容

内容

发布时间

转发数

点评数

翻页抓取:如果定时重复监测第一页是否出现新内容,翻页抓取是没有意义的,但是,我们在本文还是定义了翻页抓取规则,仅为演示。

注释1:登录前和登录后看到的内容数量有差别,定义上述网站抓取信息结构(用于自动生成抓取规则)时,事先登录了新浪微博,所以读者如果要用MetaStudio加载体验该信息结构,请事先通过火狐浏览器完成登录,否则可能加载失败,详细说明参见下节。

注释2:抓取AJAX网站的信息结构的加载方法有点不同,请参考《分页抓取卓越网的商品》

注释3:本文不是入门教程,如果对MetaSeeker的基本操作方法不熟悉,请按顺序阅读《MetaSeeker速成手册》

1 登录新浪微博

如果不登录新浪微博,访问上述样本网页看到的微博信息条数要少很多,所以,在运行之前先用Firefox访问新浪微博,完成登录。由于登录状态记录在cookie中,即便火狐浏览器退出了,在一定时间内登录状态还是有效的,在此期间运行MetaSeeker不用再次登录。

2 抓取新浪微博的规则

图1显示了如下步骤:

在内嵌浏览器上选择样例,如果打开了反向选择开关,则MetaStudio能够在DOM树视窗中自动定位对应的DOM节点,参见《抓取当当百货价格》

为各信息属性作数据映射和FreeFormat映射,以便MetaStudio自动生成抓取规则,参见《抓取当当百货价格》

为了抓取多条微博消息,即抓取多实例,进行FreeFormat映射,而且选择@class='MIB_linedot_l'作为

FreeFormat标志。因为在网页上,多个HTML

DOM节点具有这个class值,所以,可以用来抓取多实例。相反,因为@id一般在一个网页上是唯一的,所以,不能选择这个DOM节点的@id作为

FreeFormat标志。详细描述参见《抓取京东商城商品价格》。如果不用FreeFormat映射,也可以使用样例复制品方法抓取多实例,参见《抓取当当百货价格》

3 设置AJAX抓取模式

如图2所示,我们只选择了延长模式,而不像《分页抓取卓越网的商品》那样同时设置两个AJAX网页抓取模式,因为试验发现,转发数和点评数是在网页加载完成后才使用Javascript/JS程序从服务器异步加载的,所以,一定要设置延长模式。

4 定义分页抓取规则

为了翻页抓取所有网页,需要定义线索抓取规则,而且应该设置成线内线索类型,详细操作步骤参见《批量抓取当当网价格数据》,本文只简单介绍一下步骤(如图3):

转到Clue Editor工作台

创建记号线索

选择记号“下一页”

进行线索映射

进行记号映射

设置成线内线索

图4显示了怎样设置线索定位的首选项,这一步不是必须的,但是这样做可以提高抓取规则的适应度,也就是说即使目标网页结构修改了抓取规则受到的影响尽量小。原理说明参见,另一个应用案例参见

点击菜单“配置”-〉“首选项”

在弹出对话框中选择线索定位标签(tab),从“偏好id”改成“偏好class”

观察MetaStudio自动生成的抓取规则文件,可以看到变化,定位记号“下一页”时就近采用@class='fanye MIB_txtbl rt'作为FreeFormat标志,这样可以提高抓取规则的适应性。

至此,信息结构定义完了,可以将它和自动生成的抓取规则一起上载到MetaSeeker服务器上,以便DataScraper随时随地使用这个抓取规则。很明显,信息结构定义过程与《分页抓取卓越网的商品》没有什么本质区别,但是,下面的章节我们可以看到需要更多高级技巧才能完整抓取新浪微博的内容。

5 自动滚屏抓取

用Firefox火狐浏览器阅读该样本网页上的微博消息时,如果网络速度不很快,会有一种特殊体验:微博消息很多,这个网页很长,需要拖动右侧的卷

滚条滚屏才能看全所有消息,当网速比较慢时,滚屏时先看到文字,然后是图片,然后是转发数和点评数。后者是异步加载的,没有滚动到可见范围就不从服务器上

下载这些内容。如果我们采用通常的抓取方法,势必只能抓取到前面几条消息的点评数和转发数,因此,必须要求DataScraper在抓取的时候自动滚屏。

这种情形不仅发生在微博网站上,有些网站的网页上有大量图片,为了提高网页下载速度,一般也是在滚屏时才下载图片,例如网站就是这样。

6 设置滚屏参数

图5显示了设置滚屏参数的步骤:

打开全屏显示,DataScraper重新运行时或者启动多线程周期性抓取窗口时,DataScraper将占满整个屏幕,增大浏览器的可视范围,每屏显示的内容最多,以减少翻屏次数

选择滚屏参数菜单

在弹出对话框中输入滚屏参数。More Pages参数一定不能为0,否则就不会自动滚屏,具体滚多少,需要试验验证,详细说明参见《如何自动滚屏抓取AJAX网站数据》

如果采用周期性自动抓取模式,请参考修改crontab.xml文件的相关参数。

注释:本例将More Pages设置成15,当网络速度很慢的时候,也许30更合适,这样预留更多时间等待所有点评数和转发数加载上。

7 提高新浪微博的抓取速度

新浪微博上的照片尺寸很大,而且数量很多,下载时间很长,做Web数据挖掘系统时,图片一般不需要,如果能够阻止下载图片,将大大加快速度,如果您使用企业版,请参考。

ajax爬取微博,自动滚屏抓取新浪微博相关推荐

  1. 用HyperSnap实现滚屏抓取多屏网页

    用HyperSnap实现滚屏抓取多屏网页 你完全不必耐心的看完所有内容,这里想说明的无非是以下2点: 1. 滚屏内容抓取:在HyperSnap的Active Window(ctrl+shift+w)抓 ...

  2. python爬取微博评论_python爬虫抓取新浪微博数据

    需求分析 微博主页 抓取的内容包括:微博发布的时间,正文(仅提取文字),转发数,评论数,点赞数 抓取的内容 数据是怎么加载的 新浪微博的数据是用ajax异步下拉加载的,在chrome的调试模式下可捕捉 ...

  3. echart 时间滚动_基于 ECharts 封装甘特图并实现自动滚屏

    项目中需要用到甘特图组件,之前的图表一直基于 EChart 开发,但 EChart 本身没有甘特图组件,需要自行封装 经过一番鏖战,终于完成了... 我在工程中参考 v-chart 封装了一套图表组件 ...

  4. ajax获取网页新闻,基于Ajax的新闻网页动态数据的抓取方法及系统

    主权项: 1.基于Ajax的新闻网页动态数据的抓取方法,其特征是,包括如下步骤:步骤(101):建立新闻网页爬取内容数据库,设置新闻网页爬取内容数据库的编码方式:获得待抓取新闻网页的新闻列表页面的UR ...

  5. VC编辑框(EDIT)的自动换行、自动滚屏 、到指定行数自动清空

    From: http://getyoureyes.blog.163.com/blog/static/101716622201083081914305/ 经过多次测试,总结出VC编辑框(EDIT)的自动 ...

  6. jQuery实现 自动滚屏操作

    实现自动滚屏思路: 1.滚屏即:文本的往上移动一段距离: 2.那么我们使文本每过一段时间就往上移动一段固定距离,就可实现滚屏: 3.直到文本底部出现在浏览器窗口中,专业点就是 文本移动的距离 + 浏览 ...

  7. 网页怎么算切屏_十种切屏抓取方法(图形)

    屏幕截取招招看!教你十种屏幕抓取方法(图形) 说起屏幕截图,相信大家都不会陌生:随意翻翻每期的<电 脑报> ,哪篇不是图文并茂 ? 但是对于刚刚接触电脑的朋友来说, 对如何进行抓图还摸不着 ...

  8. MFC EDIT的使用———自动滚屏

    在自动换行设置的时候,要在EDIT控件的属性中选中"multiline"的属性和Auto_HScroll.Vertical scroll. 经过多次测试,总结出VC编辑框(EDIT)的自动换 ...

  9. Qt4小技巧——QTextEdit自动滚屏

    CuteQt Blog » Blog Archive » Qt4小技巧--QTextEdit自动滚屏 Qt4小技巧--QTextEdit自动滚屏   本站所有文章由本站和原作者保留一切权力,仅在保留本 ...

  10. 帆软报表调用python脚本_帆软报表(finereport)实现自动滚屏效果

    例如Demo:IOS平台年度数据报表. 展示内容丰富,一个页面中存在多个图表.内容,超出了浏览器窗口的大小导致内容展示不全. 为了能够预览这个报表的全部内容,可以使用JS滚屏效果来实现. 操作步骤: ...

最新文章

  1. ora-01033:oracle initialization or shutdown in progress 解决方法
  2. 哇,union的优先级很高嘛
  3. 【大学课程】线性代数基础知识点
  4. 小心,信用卡销卡后,竟然变成黑名单!
  5. 前端学习(1943)vue之电商管理系统电商系统之通过路由加载商品分类
  6. 6个案例手把手教你用Python和OpenCV进行图像处理
  7. 安装oracle ora-01005,Exteernal table ORA-29913,ORA-30653,KUP-01005
  8. leetcode python3 简单题122. Best Time to Buy and Sell Stock II
  9. linux扫描目标主机开放端口
  10. 为什么国外程序员加班少?他们这样评价996和技术公众号
  11. 英特尔开源技术中心招收虚拟化工程师若干(北京/上海)
  12. 2022美赛M奖经验总结(1)分工职责篇(附论文)
  13. 拍乐云基于AV1的实时视频系统技术实践 | 2021 LiveVideoStackCon 演讲回顾
  14. oppo r11s鸿蒙固件,OPPO R11s Plus官方固件rom刷机包_R11sPlus系统升级更新包
  15. PPT文件太大怎么办?如何压缩PPT?这几招帮你搞定
  16. STC-B学习板单片机编程
  17. 阿里巴巴Mysql规范
  18. Fortify 5.1漏洞整改方案(1)
  19. 如何在win7 64下安装ipython notebook
  20. apex java_Apex - 类

热门文章

  1. OpenGL图形学中的DDA算法
  2. 高通about.html 文件,关于高通校准调用文件的说明文档
  3. java网站后台管理系统_java网站后台管理系统
  4. 远程办公软件华为云WeLink高效视频会议指南(下篇:视频会议怎么记录会议纪要?)
  5. 2022年五一数学建模C题讲解
  6. win10+VS2013+OPENCV如何配置于仕琪人脸检测算法
  7. fluent-bit 本地安装及配置
  8. perl操作postsql
  9. 高频变压器漆包线规格的确定
  10. 网络教学的即时通讯视频