定义demo_list_game_basic主题时,我们选择了样本页面http://www.cn3gw.com/html/game/dongzuo/,我们继续研究这个网页的结构,我们看到两处分类列表(如图1 A和B)。分析以后,发现两个列表都导向相同的网页,但是网页的URL不太一样(实际上是一样,A使用网页URL的路径名,从而访问缺省的index.html页,而B使用完整的URL地址),选择A或者B都可以,但是,为了保持与demo_list_game_basic一致,我们选用A。
图1(放大)
为其它类手机游戏列表定义网页数据抓取规则时可以采用一种快捷方式,如果其它类的手机游戏列表页的网页结构与动作类的相同,快捷方式十分有效,如果不同,需要重新定义一个符合目标类的信息结构。下面我们讲解怎样使用快捷方式。
用快捷方式定义其它类别的网页数据抓取规则
在MetaStudio的Schema List工作台上,找到这个主题,并加载,待MetaStudio下部的状态条显示完成。将运动射击类的网页URL(http://www.cn3gw.com/html/game/sheji/)输入到MetaStudio的URL输入栏,回车,待网页加载完成(状态条显示完成),点击菜单文件->分析页面(如图2),如果网页结构完全与动作类的一致,中间不会弹出对话框说某某信息属性无法定位,而是在最后弹出对话框说:
请检查Theme Editor和Clue Editor工作台上的主题名。也许需要重新命名
这是提示信息,表示分析成功,页面结构一致,demo_list_game_basic主题的网页数据抓取规则可以用来抓取其它类别的游戏列表信息。至此,需要做决策:
- 运动射击类游戏列表的主题是否要与动作类一致?
- 运动射击类游戏详细信息网页的抓取主题是否与动作类的一致?
图2(放大)
上面所述的提示框就是要操作员做这个决策。不同决策,可能产生如图3所示4种不同的网络爬虫路线图。
- 图3A,表示游戏列表页和游戏详细信息页都用一致的数据抓取主题
- 图3B,表示游戏列表页用不同的数据抓取主题,而游戏详细信息页使用相同的主题
- 图3C,表示游戏列表页用相同的数据抓取主题,而游戏详细信息页使用不同的主题
- 图3D,表示用不同的游戏抓取主题
图3(放大)
命名主题的目的一方面是给定题网络爬虫规定路线图,另一方面是为了数据集成软件能够区别处理抓取的网页数据。所以,原则上,不同语义的网页应该用不同的主题名,例如,采用图3D的方式。但是,语义的理解本身也是一个分类问题,如果不想区别对待动作类手机游戏和射击类游戏,语义可以是“游戏”,那么就可以采用图3A,此时,网页数据抓取结果程序就不要试图区别对待手机动作类游戏还是射击类游戏。
一般来说,没有理由采用图3B,一开始分开,后来又混合在一起,没有理由这样处理。图3C可以采用,当抓取列表数据时混在一起抓,因为只是为了抓取后续主题的超链接,区别对待意义不大,但是抓取手机游戏详细数据时区别对待,抓取结果处理程序可以按类别进行不同处理,这是一种高级技巧,不一定总是成行,要根据实际情况,看网页上是否有区别标志,参见下一节。
我们不妨采用基本原则,每一类手机游戏用不同主题,即图3D。进行下面的步骤
- 在Theme Editor工作台上命名主题:demo_game_list_sheji
- 在Clue Editor工作台上命名Info类线索(用于抓取详细游戏信息网页数据)的主题:demo_game_sheji。该工作台上还有一个用于翻页的线索clue 1,主题名应该改成demo_game_list_sheji,可以不必输入,接连点击两次inthread查检框就能自动将demo_game_list_sheji填入(如图4)
- 上载信息结构
图4(放大)
总结
上述快捷方式主要用于网页结构一致的情况,如果各分类网页的结构不一样,分析页面操作没有完全成功,那么需要修改整理箱结构,这种情况最好使用图3D的网络爬虫路线图,因为用不同主题,网络爬虫使用不同爬行路线,肯定不会混淆,如果采用图3A或者图3C,必须在相同主题下定义多个信息结构,网络爬虫根据网页数据抓取校验规则判断使用哪个信息结构抓取当前网页,当定义的信息结构存在歧义(语义交集),有可能判断失误。
上述方式继续推广到其它类别,为这个目标网站的手机游戏定义了12类列表抓取主题。
下一步做什么
当前有了12个游戏分类列表主题,他们都各自有一个线索,DataScraper网络爬虫分别从这12个线索开始,先抓取游戏列表和超链接,然后抓取详细的游戏信息,可见分类网页列表是网络爬虫入口点,称为种子页面。如果想向前扩展主题网络图,使得这12个线索在抓取前一个主题的网页时获取,而不是手工建立的,那么,当网站上增加了分类,网络爬虫能够自动增加分类列表主题的线索数,该怎么做?下一节讲解。