mtime时光网电影资料库采集规则

想采集电影资料,在国内找一个收集比较全面的网站,最后我锁定了mtime时光网:http://movie.mtime.com/movie/search/section/

经过分析发现,时光网的这个筛选结果页面html中,是用<div id="searchResultRegion"></div>输出的列表,html代码中看不到列表内容,疑似用一种叫做ajax懒加载的技术手段实现的。

在筛选结果页面通过抓去HTML代码发现电影URL的常规方法在这里不管用,当然筛选结果页的翻页也不管用,因此需要用抓包工具把筛选结果的内部列表页URL找出来。如下:

.

http://service.channel.mtime.com/service/search.mcs?Ajax_CallBack=true&Ajax_CallBackType=Mtime.Channel.Pages.SearchService&Ajax_CallBackMethod=SearchMovieByCategory&Ajax_CrossDomain=1&Ajax_RequestUrl=http%3A%2F%2Fmovie.mtime.com%2Fmovie%2Fsearch%2Fsection%2F%3Ftype%3D201%23pageIndex%32%26year%3D2011%26type%3D201&t=201210271753315856&Ajax_CallBackArgument0=&Ajax_CallBackArgument1=0&Ajax_CallBackArgument2=138&Ajax_CallBackArgument3=&Ajax_CallBackArgument4=0&Ajax_CallBackArgument5=0&Ajax_CallBackArgument6=0&Ajax_CallBackArgument7=0&Ajax_CallBackArgument8=&Ajax_CallBackArgument9=&Ajax_CallBackArgument10=&Ajax_CallBackArgument11=0&Ajax_CallBackArgument12=0&Ajax_CallBackArgument13=0&Ajax_CallBackArgument14=1&Ajax_CallBackArgument15=0&Ajax_CallBackArgument16=1&Ajax_CallBackArgument17=4&Ajax_CallBackArgument18=10&Ajax_CallBackArgument19=0

注意以上url中加红加粗的参数:

Ajax_CallBackArgument2=国家/地区ID
Ajax_CallBackArgument3=类型ID
Ajax_CallBackArgument9=年代ID,如果不过滤就为空
Ajax_CallBackArgument10=年代ID,如果不过滤就为空 (你没看错,10和9都是指年代,一样的id)
Ajax_CallBackArgument18=页码,

以上参数中的id你可以通过http://movie.mtime.com/movie/search/section/#year=2011&type=183&nation=275 这个筛选地址得到。

用火车头的批量/多页模式添加采集地址,Ajax_CallBackArgument18=(*),如下图:

1.jpg

在“采集网址规则”时,选择手动:

2.jpg

最后注意控制下采集网址的线程和频率,在你采集了几十个列表后,mtime时光网会让你输入验证码,很烦,目前我没想到用什么方法来避免这个验证码。