我需要抓取新浪微博贴的内容和该贴的评论用户、转发用户,比如抓取http://weibo.com/1380274560/yuLM04JBb次贴的评论和转发用户。
抓取微博贴内容的主题是weibo_one,定义转发线索,抓取转发用户时使用不同于贴内容的主题weibo_one_transmits,复制样本实现多实例抓取,翻页时使用线索映射,下一页标记映射。主题weibo_one_transmits设置了ajax抓取配置选项。
1 但抓取的数据始终没有翻页?改成相对索引,只能抓取第一页和第二页的内容,后面的就不抓了
2 datascraper的使用,有时抓过一次之后,第二次再想去抓一次,线索-》激活不了了,而且weibo_one不能自动提取weibo_one_transmits。最初一次能提取,后面就没自动提取了
3 如果我是要抓这个微博贴的内容和评论,那需要在评论包围节点上定义线索,另取主题抓取吗?
好不容易找到一款能爬取ajax网站的软件,希望大牛能帮我解决问题,非常感谢!
新浪微博的抓取技巧
在线版服务器上无法查到这两个主题,所以不知道具体原因。我估计是没有设置线索定位首选项。选择MetaStudio菜单“配置”-〉“首选项”,在线索定位首选项中选择偏好class,这样可以使自动选用的FreeFormat标志更靠近翻页超链接。
翻页不成功也有别的原因,有些是用AJAX的事件实现翻页,而事件需要发生在特定的HTML节点上,不一定是A节点,此时,在做线索映射时就得选对节点。
线索-〉激活只能激活没有成功抓取的线索,比如,超时的线索,成功抓取过的线索需要激活的话,需使用自动周期性抓取指令文件crontab.xml中的renewClue
如果抓微博内容和评论,不用另外的主题,因为在同一个网页上,但是可以用不同的整理箱。
偏好class设置后,情况还是没有得到改善
呵呵,非常感谢Fuller!!
在线服务器上查不到这两个主题名是因为我没有完全按照真的主题名写,真的主题名是:xinlang_weibo_one,xinlang_weibo_one_transmits。
配置->首选项 偏好class设置后,情况还是没有得到改善,爬取的时候xinlang_weibo_one总是好像不能自动提取到xinlang_weibo_one_transmits,提取xinlang_weibo_one的时候会抓到微博贴内容和第一页的转发。然后手动提取xinlang_weibo_one_transmits抓到的转发数据不知道是哪页的了,也是一页的数据。
问题会出在哪呢??
另外有两个小bug
1:已编辑过的主题xinlang_weibo_one_transmits在Schema List里面重新加载不是很顺利,必须要关掉metaStudio再打开之后才可以加载成功
2:对于第一次打开使用dataScraper的用户,如果在输入密码的时候要在别处复制密码过来导致dataScraper先进入而未登录,登录之后,服务器地址右边显示的图标会是红色的而造成不能提取
模拟点击抓取新浪微博的转发内容
从xinlang_weibo_one自动提取到xinlang_weibo_one_transmits应该没有问题,采用DataScraper的模拟点击。是你设置首选项有问题,定位首选项有两个tab窗口,第一个是全局的,第二个是线索的,你设置了第一个,而没有为线索设置首选项。自动转到xinlang_weibo_one_transmits后,翻页抓取就有问题了,在网页的DOM树上可以看到"下一页“的DOM结构是A->SPAN->text(),这样三层关系,而实际响应用户点击的是SPAN,而不是A,定义记号线索时就需要注意了,只能用SPAN映射给clue0,然后用"下一页“做记号映射。但是原有版本在生成抓取规则时有bug,今天紧急将MetaStudio升级到4.11.10版本,请下载使用。
对于您提到的两个bug,第一个确实有这个问题,第二个以前没有遇到过,我们验证一下看看
抓取到第XX页就出现了“目前还没有转发,抢沙发”的窗口
哈哈,在您的帮助下终于可以抓取了,非常感谢您的帮助!
不过在抓取过程中还是有一些小问题等待我去完善,比如本来转发页数有八百多页,第一次抓取到40个xml文件(第40页吧)的时候datascraper浏览器窗口就显示“目前还没有转发,抢沙发”(已设置了很长的超时时长)。再试几次,到第11页,到第二页就出现了“目前还没有转发,抢沙发”的窗口,不知道是哪个地方没有设置好还是本身有Bug,待我再好好研究研究后还有问题的话再来请教。
翻页抓取新浪微博很容易被限制
目前新浪微博封锁得很厉害,翻页抓取太多就容易封锁,我感觉您遇到的问题像是新浪微博故意封锁。通常我们会部署很多DataScraper计算机通过不同ADSL线路抓取新浪微博,否则就被封了
非常感谢Fuller
啊,表示有些悲剧无奈丫!不过您的热心帮助还是让我看到很大的希望,非常感谢Fuller,美好的祝福送给您!
抓取新浪微博需避开MetaStudio的bug
MetaStudio在定义新浪微博抓取规则的时候,如果新浪微博网页内容刷新了,可能导致MetaStudio崩溃,这是一个记录在案的bug。一旦抓取规则定义好,DataScraper运行过程中不会受网页内容刷新的影响,因为DataScraper有很强的校验机制。