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

415次阅读
没有评论

l 采集网站

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

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

【采集内容】

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

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

l 思路分析

配置思路概览:

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

l 配置步骤

1. 新建采集任务

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

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

2.翻页配置

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

https://tj.esf.fang.com/house/i32/ 第二页链接

https://tj.esf.fang.com/house/i33/ 第三页链接

https://tj.esf.fang.com/house/i34/ 第四页链接

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

https://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属性值。

 

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

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

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-24发表,共计3919字。
新手QQ群:570568346,欢迎进群讨论 Python51学习