Hi 我能够按照指导说明对某一个新浪微博的名人建立抓取的主题,能成功完成对该名人下所有消息的关键信息抓取。考虑到不同名人主页的页面结构都是一样的,比如http://weibo.com/1876548447 和http://weibo.com/iamgillianchung。理论上该主题应该能够适用我希望抓取的任何名人的相同数据。但是我能想到的方法只有一个,就是在MetaStudio里面地址栏转到对应名人主页,并修改主题名和页面地址,然后另存。但是系统提示当前加载页面不是工作页面。请问这里有没有更好的方法,能够方便我仅仅通过例如复制,该地址的方式,就建立多个针对不同微博名人的抓取策略?或者其他什么方法达到同样的目的?谢谢!
采用层级抓取方法
有两种解决方案:
第一, 手工输入URL地址后回车,等待加载完新网页后(工具条中部一个绿色按钮变成后色了),点击菜单“文件”-〉“分析页面”,如果分析成功了,没有提示错误,最后弹出一个对话框,提示你是否要修改主题名再上传,可以忽略这个提示,点击schema或者instruction按钮上传抓取指令
第二,上述手工方式只适合少量网页情况,大量网页需要采用层级抓取,参看:http://www.gooseeker.com/cn/node/document/metaseeker/cookbookv4/multilayers.html
有什么问题请进一步提问
谢谢你的回复,对于
谢谢你的回复,对于第一种解决方案,确实会出错,比如微博里面我希望能够抓取到消息里面@到的所有微博用户名,但是有些消息存在这类结构,但是有些消息则并没有@任何其他用户,这样,DOM结构里面就不存在我要抓取的信息。如果采用样例复制的方式一开始没有问题,一旦重新载入再做页面分析,MetaStudio就提示无法定位容器。这里有没有什么好的办法?还是我采用的方法有什么问题?谢谢!
想办法提高抓取规则的适用度
首先,在定义抓取规则是,网页不总是出现的内容就不要设置key特性,这样,即使MetaStudio再次加载这个信息结构不成功,上次生成的抓取规则也不会失效,DataScraper照样可以工作
其次,可以使用block特性,DOM树上抓取上一层节点下的所有文本,比如DIV,这样就不会受@是否出现所影响。这样做就需要在抓取结果处理程序中用程序实现@信息的在此抽取和过滤。我们自己做的应用系统一般都采用这种方法。