欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从零学爬虫:采集房天下二手房信息

程序员文章站 2022-03-08 15:44:19
...

l 采集网站

【场景描述】采集房天下最新二手房信息。

【入口网址】tj.esf.fang.com/

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

【采集内容】

采集天津市房天下,二手房模块中的所有二手房的标题、价格、户型、面积、单价、朝向、楼层、装修、小区、区域、联系人、电话。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

l 思路分析

配置思路概览:

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

l 配置步骤

1. 新建采集任务

选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,【任务名称】自定义即可,点击下一步。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

2.翻页配置

获取二手房页面中全部翻页链接,观察翻页链接规律发现:

tj.esf.fang.com/house/i 第二页链接

tj.esf.fang.com/house/i 第三页链接

tj.esf.fang.com/house/i 第四页链接

不难发现,翻页链接组成为:

tj.esf.fang.com/house/i页数+/

①故添加脚本如下:

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

②采集预览

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

3.链接抽取

①新建模板二,并新建一个链接抽取,用来抽取每个翻页中所有二手房链接。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

②列表链接需要脚本配置,操作如下图所示:

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

③查看页面源码,打开浏览器中该页面,点击F12,点击指针按钮,如下图所示,用指针按钮选中所需要的二手房链接,这时在右侧出现对应源码内容。说明链接在class为【shop_list shop_list_4】的节点下。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

④经过观察发现,我们要找的是【shop_list shop_list_4】节点下每一个名为【dl】的节点对应一个二手房信息。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

每个【dl】节点中的名为【dd】节点的子节点的子节点的href就是该二手房的链接。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

⑤根据以上思路,具体配置脚本如下,配置好脚本后点击右上角【保存】。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

文本如下:

var foor = DOM.FindClass("shop_list shop_list_4","div",0 );//找到class为shop_list shop_list_4的节点
var foora= DOM.FindName("dl",foora );//找到foor节点下名为dl的节点
while(foora)//如果是foora节点
{
	url link;//定义一个url
	var pro = DOM.FindName("dd",foora );	//找到foora节点下name为dd的节点
	link.urlname= url.StdUrl(URL.urlname,pro.child.child.href);//输出链接为pro节点的子节点的子节点的href
	link.title =pro.child.child.title;//输出链接标题为pro节点的子节点的子节点的title
	link.tmplid = 3;//关联模板2
	RESULT.AddLink(link);//结果输出一条链接
	foora = foora.next;//跳到foora节点的下一个节点,即下一个【class=listtxt】的节点
}

⑥采集预览如下所示:

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

2. 数据抽取

①链接抽取完成进入数据页,在原有模板基础上,右键选择【添加模板】,新添加的模板,右键【添加数据抽取】。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

②此时要完成数据建表的工作:选择【数据建表】,点击【采集数据表结构】中的【+】,即可添加数据表,名称可以自定义,在此命名为房天下表单。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

③数据表配置完成,选择【数据抽取】右侧数据属性配置,表单选择刚建立的“房天下”数据表,则可看到表单中的字段在左侧显示。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

④点击脚本窗口,选择数据抽取脚本

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

⑤观察所需字段在页面中的位置,浏览器打开任意一个二手房详情页,点击F12,点击指针按钮,如下图所示,用指针按钮选中所需要的二手房字段信息,这时在右侧出现对应源码内容。

name_字段:如下图所示可知,本字段在class为【floatl tit_details】的节点下。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

price字段:如下图所示可知,本字段在class为【trl-item price_esf sty1】的节点下。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

type_字段:如下图所示可知,本字段在class为【tr-line clearfix】节点的子节点下。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

area字段:如下图所示可知,本字段在class为【trl-item1 w182】节点的子节点下。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

priceper字段:同理在class为【trl-item1 w132】节点的子节点下。

orientation字段:同理在class为【trl-item1 w146】节点的子节点下。

floor字段:虽然本字段在class为【trl-item1 w182】节点的子节点下,但是如下图所示,本页源码中不只一个trl-item1 w182,所以不能用同上述几个字段一样的方法来获取。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

如下图所示,通过页面源码观察可发现,本字段在class为【tab-cont-right】的节点的子节点的下一个的下一个的下一个节点中的class为【trl-item1 w182】的节点中。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

Renovate字段:由图可知,本字段在class为【tr-line clearfix】的节点下的class为【trl-item1 w132】的子节点中。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

Estate字段:由图可知,本字段在class为【tr-line】的节点下的class为【rcont】的节点中的所有文本。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

zone_字段:由图可知,本字段在class为【trl-item2 clearfix】的节点下的class为【rcont】的节点中的所有文本。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

name_字段:由图可知,本字段在class为【zf_jjname】的节点中的所有文本内容。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

Tel字段:由图可知,本字段为classid为【AgentTel】的字段中的value属性值。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

⑥综上所述,数据抽取脚本如下所示:

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

脚本文本:

var floor=DOM.FindClass("tab-cont-right","div");
var floor1=floor.child.next.next.next;
var floor2=DOM.FindClass("tr-line","div");
var floor3=DOM.FindClass("trl-item2 clearfix","div").next;
var floor4=DOM.FindClass("zf_chat_line","a");
record re;
re.id = MD5(ur);
re.title = DOM.GetTextAll(DOM.FindClass("floatl tit_details","h1"));
re.price=DOM.GetTextAll(DOM.FindClass("trl-item price_esf  sty1","div",0));
re.type_=DOM.GetTextAll(DOM.FindClass("tr-line clearfix","div",0).child);
re.area=DOM.GetTextAll(DOM.FindClass("trl-item1 w182","div").child);
re.priceper=DOM.GetTextAll(DOM.FindClass("trl-item1 w132","div").child);
re.orientation=DOM.GetTextAll(DOM.FindClass("trl-item1 w146","div").child);
re.floor=DOM.GetTextAll(DOM.FindClass("trl-item1 w182","div",floor1));
re.renovate=DOM.GetTextAll(DOM.FindClass("trl-item1 w132","div",floor1).child);
re.estate=DOM.GetTextAll(DOM.FindClass("rcont","div",floor2));
re.zone_=DOM.GetTextAll(DOM.FindClass("rcont","div",floor3));
re.name_=DOM.GetTextAll(DOM.FindClass("zf_jjname","span"));
re.tel=DOM.FindId("AgentTel").value;
RESULT.AddRec(re,this.schemaid);

⑦以上完成全部字段配置,效果预览如下:

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

l 采集步骤

模板配置完成,采集预览没有问题后,可以进行数据采集。

①首先要建立采集数据表:

选择【数据建表】,点击【表单列表】中该模板的表单,在【关联数据表】中选择【创建】,表名称自定义,这里命名为fangtianxia(注意命名不能用数字和特殊符号),点击【确定】。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

创建完成,勾选数据表。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

②选择【数据采集】,勾选任务名称,点击【开始采集】,则正式开始采集。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

③可以在【数据浏览】中,选择数据表查看采集数据,并可以导出数据。

从零学爬虫:采集房天下二手房信息
            
    
    博客分类: 教程数据分析技术干货数据采集爬虫教程 爬虫 

l 课后回顾

FindClass(class名,标签类型,开始查找结点):当符合条件的class名称唯一时,使用class名来查找结点。

FindName(标签名,开始查找结点):当查找范围内,符合条件的数据标签唯一时,可以使用标签名称查找标签结点。

GetTextAll(需要获取文本的结点,使用的字符编码):获取该html标签节点及所有子节点的可见文本。

Child:孩子频道节点。

FindId(idVal):通过标签的ID属性值查找标签节点,其中idVal表示待查找标签ID属性值。

 

在操作中如有问题,可进入前嗅官网(forenose.com),咨询技术支持。

前嗅免费提供一对一技术支持服务。

相关标签: 爬虫