样本页面:http://xueqiu.com/S/SH601318
主题名:demo_fuller_xueqiu_list
雪球网的这个网页跟微博网站的网页很像,假设我们要抓取网友发表的关于中国平安的股票消息,跟抓取微博消息一样。而且,这个网站采用的动态网页技术也跟微博类似。这类动态网页的内容不断自动变化,如果在MetaStudio定义抓取规则过程中发生了变化,会有严重影响。
比较轻的影响是MetaStudio报错说:Cannot find the node,也就是说DOM被自动刷新了,必须要选择MetaStudio的菜单“文件”-〉“刷新DOM”,刷新DOM后,原来做的数据映射和FreeFormat映射都失效了,需要清除掉原来的映射,重新做映射。
比较重的影响会导致Firefox崩溃,也就是所有浏览器窗口都消失了。因为MetaStudio要用DOM节点做映射,万一在映射过程中这个DOM节点被动态删除了,MetaStudio就会因为找不到DOM节点而崩溃。
避免这些问题的方法是禁止JavaScript的执行,一旦禁止了JS的运行,网页不再动态刷新了,所以,一定要等到所有需要的信息都显示出来了再禁止。应该按照顺序执行如下步骤:
- 观察和等待所有需要抓取的内容都显示在浏览器上了
- 选择菜单“文件”-〉“禁止JS”
- 选择菜单“文件”-〉“刷新DOM”
这样就做好了定义抓取规则的准备工作。
后面的定义过程跟定义其他AJAX网页抓取规则一样,可以参看《卓越亚马逊的抓取方法》。关于Firefox崩溃的说明,参看《定义新浪微博抓取规则导致崩溃怎么办》