热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

怎样采集淘宝宝贝的用户评价信息

怎样采集淘宝宝贝的用户评价信息2011年03月15日MetaSeeker速成手册从《卓越网翻页抓取不了怎么办》开始连续多章讲解采集AJAX网站的技巧。AJAX网站内容使用Java
怎样采集淘宝宝贝的用户评价信息

2011年03月15日

  MetaSeeker速成手册从《卓越网翻页抓取不了怎么办》 开始连续多章讲解采集AJAX网站的技巧。AJAX网站内容使用Javascript编程语言动态显示,给普通网络爬虫造成很大障碍,而网站采集器MetaSeeker 嵌 入了一个完整的web浏览器,理论上说,网页上能够看到的内容都能够采集下来。但是,Javascript是一个强大的编程语言,AJAX网页内容显示技 巧千变万化,在不定制的情况下,几乎不可能存在一个能够应对所有AJAX情形的网站采集器。这也是MetaSeeker快速升级的原因:将最新出现的 AJAX开发模式纳入其中。2010年5月,MetaSeeker再次为提升AJAX网站采集能力 进行了升级,主要目的是采集淘宝宝贝的用户评论信息,中国人民大学某研究室的科研项目期望从淘宝宝贝的普通商品信息和用户评论信息中挖掘出某些关联规则。本文将详细解释淘宝宝贝的评论信息的采集规则的定义方法。

  对采集目标的描述: 样本页面 :http://item.tmall.com/item.htm?id=8517156144&sourc e=dou&prc=2&cm_cat=50029375

  主题名

  demo_TB_detail :采集淘宝宝贝的普通信息

  demo_TB_comment :采集用户评论信息

  采集的内容

  采集商品信息

  商品名

  商品价格

  采集所有用户评论

  内容 日期 买家

  买家网址

  翻页采集所有评论信息

  注释1 :目标网站的网页结构可能会改变,一些重大改变将影响信息结构 的可用性,如果加载本文提到的信息结构时发现某些信息属性 (用于存储采集到的数据的字段)定位失败,请参照《修改失效的采集规则》 调整信息属性的映射关系。

  注释2 :本文非入门教程,所以,不会将操作步骤一步步分解开并用屏幕截图显示出来,如果需要入门知识,请顺序阅读《MetaSeeker速成手册》。 在淘宝宝贝网页上,用户评论显示在"评价详情 "标签(Tab)下,点击这个标签时,网页使用Javascript从淘宝服务器上将评价信息下载并显示出来。下面我们做个实验。

  

  图1 图1有如下步骤: 等待网页加载完成,此时,MetaStudio底部的状态条上显示"完成 "字样。

  关闭反向选择 ,即复选框(checkbox)不要勾选。

  点击网页上的"评价详情 "标签,可以看到网页内容改变了,用户评论信息显示了出来

  设置反向选择,以便快速定位DOM节点。

  选择一条评论信息,用鼠标点击它

  弹出一个对话框,显示"Error: Cannot find the node",说明MetaStudio没有在DOM树上定位到对应于被点击的用户评论的DOM节点。如果定位成功,DOM树应该自动展开,并且在对话框中显示定位到的DOM节点号。

  此时,选择MetaStudio的菜单"文件 "-〉"刷新DOM ",再点击网页上的用户评论,成功定位到DOM节点。这说明一开始加载的网页上没有用户评论,用户评论是后来通过Javascript程序异步加载上来的。这是判断是否用AJAX显示网页内容的重要准则。 为了采集用户评论信息,DataScraper必须模拟用户点击"评价详情 "标签,所以,需要定义两个信息结构:第一个从样本页面上采集普通信息并模拟用户点击;第二个从用户评论列表中采集信息。这跟层级导航采集 的原理一样,但是,普通的层级采集是导航到其它网页,而本例没有导航到其它网页,仅仅局部修改网页内容。

  

  图2 图2有如下步骤: 为所有信息属性作数据映射和FreeFormat 映射,FreeFormat映射虽然不是必须的,但是可以大大提高采集规则的适应度,即使目标网站的网页结构修改了,采用FreeFormat技术可以在一定限度内确保采集规则不失效。

  为整个整理箱做FreeFormat映射,用以提高定位精度,其原理说明参见《采集新蛋网商品价格》

  

  图3 图3显示了很多步骤,并不是采集淘宝宝贝信息所特有的,而是我们期望通过这个案例讲解更多使用技巧。步骤如下: 转到Clue Editor 工作台,并点击newClue 按钮创建一条线索 (用于指导网络爬虫采集其它网页)

  设置成线内线索 类型,但是不是为了翻页导航采集,而是为了导航到用户评论。关于线内线索和翻页采集请参见《批量采集当当网价格》

  点击Marker 单选钮(radio button),表示根据网页上的记号定位线索,本例的记号就是文字"评价详情 "

  通常情况下,一旦设置成线内线索,目标主题名称 一栏就填入了当前主题名,可以参看翻页采集案例 ,但是,点击"评价详情 "后,网页内容被局部修改了,而且要采集的用户评论显然与当前主题采集的商品信息属于不同语义范畴,所以,应该另起一个主题名,即填入:demo_TB_comment

  设置反向选择 模式,以便快速定位DOM节点

  点击"评价详情 "标签。因为设置了反向选择模式,所以,内嵌浏览器并没有向淘宝服务器发起下载评论信息的请求,相反,自动定位到DOM树上的对应节点

  在DOM树上找到代表整个标签条的那个节点,并作线索映射,表示在这个网页区域内定位线索

  在DOM树上找到包含内容"评价详情 "的那个TEXT节点,做记号映射。应该注意到 :这个记号的完整内容是"评价详情( ",后面的括号是不需要的

  设置记号模式,不勾选这个复选框,表示只要网页上出现记号值就表示符合规则,这叫包含模式 ,而不需要网页节点内容与记号完全一致,这叫相同模式 ,这是为了配合第8步和第10步。

  编辑记号值,删除后面的括号。第8、9、10三步是可选操作,察看生成的导航采集规则(点击viewSCE 按钮)可以看到差别。

  点击MetaStudio工具条的schema 按钮,将信息结构和MetaStudio自动生成的采集规则上载到服务器上,以便DataScraper随时随地采集网络内容。 首先选择MetaStudio的菜单项"文件 "-〉"创建工作台 "清空工作台。

  

  图4

  清空工作台后,参照图4进行如下步骤: 填写主题名demo_TB_comment

  将样本页面的网址手工拷入Theme Editor 工作台的页面地址 输入栏

  如果前面设置了反向选择模式,需要关闭这种模式

  因为关闭了反向选择模式,点击网页上的"评价详情 "标签将激发浏览器从淘宝服务器上下载用户评论信息并显示在网页上。一直等待评论信息显示全了再进行下面的步骤

  选择菜单项"文件 "-〉"刷新DOM ",刷新DOM树。此时设置反向选择模式并点击网页上的评论不会遇到图1显示的"Cannot find the node"错误。

  

  图5 图5显示如下步骤: 为了采集多条评论信息,采用样例复制品映射 方法,详细说明参见《采集当当百货价格以建立比价系统》

  为了能够在网页上精确定位,定义了一个嵌套的整理箱,有两层容器节点,分别是评论 和list ,并且为顶层容器节点作FreeFormat映射,这并不是必须的,在2.1.1节已经详细说明了为什么要这么做。

  

  图6 图6显示怎样设置AJAX采集模式,即勾选菜单项"延长模式 "和"积极模式 ",详细参见《卓越网翻页抓取不了怎么办》

  

  图7 图7显示如下步骤: 在Clue Editor 工作台上创建一条线索

  设置成线内线索类型

  设置记号线索类型,网页上的"下一页 "字样作为记号。

  进行线索映射

  进行记号映射

  将记号识别模式设置成包含模式

  编辑记号值,将"下一页>> "中的两个大于号删除

  

  图8 MetaSeeker采用的FreeFormat技术能够提高采集规则的适应性,所以,即使没有显式作FreeFormat映 射,MetaStudio缺省情况下计算采集规则时也会自动选择FreeFormat标志,在网页上存在很多@class和@id属性,它们都有可能被自 动选用,但是,有时候自动选用的不太合适,需要手工调整,一般遵从就近原则 。手工调整方法是设置节点定位首选项。图8显示设置步骤: 选择菜单"配置 "-〉"首选项 "。

  在首选项弹出对话框中选择"线索定位 "标签

  选择"偏好class ",就会优选@class='show-rate-table',而不选@id='reviews',前者更靠近表示翻页区的DOM节点HTML TFOOT

  注释 :如果不采用就近原则,而是采用缺省设置,MetaStudio会自动选择@id='reviews',实测发现有时候翻页不成功,很 有可能网页的动态修改部分的结构有变化,如果不就近选择的话,可能在节点@id='reviews'和@class='show-rate-table' 之间动态插入了其它HTML DOM节点,造成定位失败。如果采用就近原则,动态插入其它DOM节点的几率大大降低。

  至此,两个信息结构都定义完了,上载后可供DataScraper使用。 如果手工执行批量采集任务,在DataScraper的主题列表中只对主题名demo_TB_detail 执行采集操作即可,DataScraper会自动从第一个主题导航到第二个主题。参看《批量采集当当网价格》 介绍的操作方法。自动周期性批量采集方法一样,只需为第一个主题指定周期性采集指令即可。 如果想修改以前定义的信息结构,例如,目标网页结构变了需要修改采集规则,需要先将其加载到MetaStudio的工作台上。第一个信息结构是普通的网页采集信息结构,加载方法没有什么不同。第二个信息结构用于采集AJAX显示的内容,需要执行"后续分析 "操作。

  

  图9 图9显示demo_TB_comment 的加载过程: 在Schema List 工作台上选中待加载的信息结构,并点击鼠标右键,弹出菜单

  选择菜单项"加载 ",开始加载信息结构

  能够看到网页已经完全加载到内嵌浏览器上了,而且弹出一个对话框,提示用户进行后续分析

  关闭反向选择模式

  在网页上点击"评价详情 ",激发网页从淘宝服务器上下载并显示用户评论信息

  等看到评论信息已经显示了,选择菜单"文件 "-〉"后续分析 "

  注意 :MetaStudio有个缺陷:如果两个信息结构使用相同的样本页面,而且第一个信息结构已经加载到工作台上了,然后加载第二个,则MetaStudio的加载过程会一直等待。本例这两个信息结构就符合这个条件,如果demo_TB_detail 已经加载到工作台了,现在需要看demo_TB_comment , 加载会一直处于等待状态。从内部实现原理角度进行分析,MetaStudio是在等待第二个样本页面加载到浏览器上,事实上第二个样本页面与第一个相同从 而已经在浏览器上了,MetaStudio却不知道,所以,一直等下去。该bug将在以后版本修改。当前,需要避开这个bug,可以重新运行 MetaStudio再加载第二个信息结构。
推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文介绍了Python函数的定义与调用的方法,以及函数的作用,包括增强代码的可读性和重用性。文章详细解释了函数的定义与调用的语法和规则,以及函数的参数和返回值的用法。同时,还介绍了函数返回值的多种情况和多个值的返回方式。通过学习本文,读者可以更好地理解和使用Python函数,提高代码的可读性和重用性。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
author-avatar
mobiledu2502894115
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有