本文以采集北京市58同城房源数据为例进行演示:
l 采集网站
【场景描述】采集58同城房源数据。
【使用工具】前嗅ForeSpider数据采集系统
http://www.forenose.com/view/commodity/forespider.html
【入口网址】
https://bj.58.com/xiaoqu/?PGTID=0d000000-0000-0ba1-7883-439f3be19550&ClickID=1
【采集内容】
采集房屋的类型、小区名、平均单价、竣工时间、地址、介绍、所属区、所属城市等。
【采集效果】
l思路分析
l配置步骤
1.新建采集任务
选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,【任务名称】自定义即可,点击下一步。
2.获取各区链接
①点击右上角采集预览,观察各区链接地址规律。
其规律为:https://+字母(城市首字母)+.58.com/xiaoqu/+数字+/
②使用地址过滤的方法,将字母链接过滤,\c表示字母串,\d表示数字串。
③观察发现还有其他链接,如“北京周边”,使用标题过滤的方法将其过滤掉。
3.获取各房龄链接
①新建模板02,在其下新建一个链接抽取。
②将模版01的链接抽取,关联至模版02:
③采集预览,并观察房龄链接的规律:
发现其规律为:https://+字母(城市首拼音)+.58.com/xiaoqu/+数字+/f+数字+/
④使用地址过滤的方法,将词语链接过滤出来(\c表示字母串、\d表示数字串):
4.抽取房屋数据
①新建一个数据表单,具体步骤和字段属性如下所示:
②新建模板03,在该模板下新建一个数据抽取。
③将模板02关联至模板03:
④关联数据表单,如下图所示:
⑤在浏览器中,点击F12,打开开发者工具,如下图所示,使用指针,快速找到所需数据在源码中的位置:
⑥根据数据结构,使用脚本抽取数据,具体如下:
var str=DOM.GetSource().ToStr();
var a=DOM.FindClass("list-cell","div").child;
record re;
for(i=0;i<25;i++){
re.id=MD5(URL.urlname)+i;
re.type_="二手房";
re.name_=DOM.GetTextAll(a.child.next.child);
re.addr=DOM.GetTextAll(a.child.next.child.next);
re.text=DOM.GetTextAll(a.child.next.child.next.next);
re.price=DOM.GetTextAll(a.child.next.next.child);
re.year_=DOM.GetTextAll(a.child.next.child.next).Left("竣工");
re.qu=DOM.GetTextAll(a.child.next.child.next).Middle("竣工 ","-");
re.city="鹤岗";
re.sj=URL.title;
a=a.next;
RESULT.AddRec(re,this.schemaid);
}
⑦采集预览,如下图所示:
配置好模板以后就可以采集数据了,数据采集教程请参考:
http://www.forenose.com/view/help/course/spider/55.html?cId=31&type=1&dId=85
*本教程仅供学习交流,严禁用于商业用途!