模板户:专注于dede模板,织梦源码,织梦模板,网站模板,dedecms模板,网站源码,dedecms教程以及各类手机网站模板和企业网站模板分享.

织梦模板

VIP

CMS教程

站长学院

随机织梦教程

最新织梦教程

织梦模板随机Tags

关键词排名 原创 用户体验 玩具外贸网站源码 关键词优化 搜索引擎 汽车配件织梦模板 网站title 太阳能光伏网站源码 网站 财务会计网站源码 餐饮管理织梦模板 餐饮加盟网站源码 关键词 汽车润滑油网站源码 蜘蛛 优化 织梦伪静态 高亮 个人网站

Python爬虫一步步抓取房产信息 | 岂安低调分享

www.mobanhu.com / 2017-11-08 22:59:22

干货

观点

案例

资讯

我们



前言


嗯,这一篇文章更多是想分享一下我的网页分析方法。玩爬虫也快有一年了,基本代码熟悉之后,我感觉写一个爬虫最有意思的莫过于研究其网页背后的加载过程了,也就是分析过程,对性能没有特殊要求的情况下,编程一般是小事。

以深圳地区的X房网为例吧。XX房网的主页非常简洁,输入相应的地区就可以找到对应的二手房或者一手房。这一篇文章主要就给大家介绍我在做XX房网爬虫的分析过程。

注意:本文采用 Chrome 作为分析加载工作,如果使用其他浏览器,请参考具体的规则。


首先想到的


嗯,你首先要跳出编程,从使用者甚至是产品经理的角度去思考:在浏览这个页面的时候,如何就能看到全市的二手房的情况。通过主页的一个区一个区的输入,搜索,然后将页面的单元下载,嗯这是一个方法。



如上图所示,只要更改keyword后面的参数,就可以获得不同区的二手房数据。编程的时候只需要手动写入一个含有各个区的list,然后通过循环去更改 keyword 后面的参数,从而开始一个区域,再爬取其中的链接。这个方法确实是可行的,深圳一共也没有多少个区。这个方法我试过是可行的。


我实际想说的


上面的这个方法固然可行,但并不是我想推荐的方法,大家看回首页,搜索栏旁边有一个地图找房。点进去你就能看到深圳全区域的房子,要是能在这里弄个爬虫,不就简单多了。




可以看到截图的右侧有所有二手房的链接,我们的任务就是下载右边的所有二手房的数据。首先第一步就先查看页面的源代码(Ctrl+U),可以从右边链表那里复制一些关键字,在源代码里面找找看,在源代码里面 Ctrl+F 搜索观澜湖试试,结果是没有,再尝试几个关键词好像都没有,但通过检查元素(Ctrl+Shift+I),是可以定位到这些关键词的位置。这样可以初步判断右边的链表是通过 Js 来加载,需要证实。




尝试对观澜湖上方的元素在源代码里面定位,例如 no-data-wrap bounce-inup dn,就可以在源代码里面找到。仔细对比一下两边的上下文,可以看到在节点下面的内容有非常大的差异。通过这个 roomList 作为关键词继续查找。




在检查元素里面可以发现 roomList 下面的加载的内容就是我们所需要的房屋列表,并且这部分内容再源代码里面没有。而在源代码页通过搜索 roomList,却发现出现在 script 里面,证实 roomList 里面的内容是通过 Js 来加载的:



下面就变成是找这个 roomList 了,由于是通过 js 加载的,打开控制台的 network,并重新刷新页面,查看页面里面各个元素的加载过程,在过滤器里面输入 roomList,可以找到一条信息:



点开看 response 里面下载的内容,发现那不就是我们要找的东西吗!里面有给出详细的页面数量(roomPageSize),那一个个的八位数字显然就是每一个房子的id嘛,然后每一页的加载数量是一定的,下面有对应 id 里面有房子的经纬度、户型、面积以及朝向等等信息(在这里做一个提醒,需要做 heatmap 的同学注意了,这里的经纬度用的是百度坐标,如果你后续可视化用的是 google 地图、高德或者 GPS,是需要转换坐标的)。



找到内容之后,接着就是看他的 Headers,看看是如何加载的。

  • Request Url 表明其访问的链接,Request Method表明他的请求方法是Post;

  • Request的头定义(Headers)里面包括 Host、Origin、Referer、User-Agent 等;

  • 请求的参数(parameters)里面有三个参数,这三个参数是直接放映在其Url链接上面,里面包括当前页的页码(currentPage)、页面大小(pageSize)以及s(这个s一开始也不同清楚是什么,但是发现每一次请求都有变化,后面才知道这个是时间戳,表示1970纪元后经过的浮点秒数);

  • 此外 Post 函数还可以发送数据到服务器做请求,这里所发送的数据包括始末经纬度、gardenId(这个到后期发现是对应的小区编号)和 zoom(代表地图上面放大以及缩小的倍数,数字越大,放大倍数越高)




基本扒到这里,对整个页面就比较清晰了,也知道我们的爬虫要怎么去写了。 


开始写代码了


逻辑整理出来后,整个代码就写的非常轻松了。首先通过 post方式访问http://shenzhen.XXfang.com/map/sale/roomList,通过正则表达式提取 Reponse 里面的 roomPageSize,或者最大页数。然后对每一页的内容进行爬取,并将信息输出。


第一部分,加载库,需要用到 requests, bs4, re, time(time 是用来生成时间戳):

1. from bs4 import BeautifulSoup

2. import requests, re, time


第二部分,通过设定合理的 post 数据以及 headers,通过 post 下载数据。其中 payload 里面包括地图所展示的经纬度信息(这个信息怎么获得,在X房网页面上通过鼠标拖拉,找到合适的位置之后,到控制台 Header 内查看此时的经纬度就好了),headers 则包含了访问的基本信息(加上有一定的反爬作用):



页面下载后,对于第一次下载首先需要用正则表达式获得最大页面数,我们真正需要的内容结合 Beautiful 的 get 和 find 以及 re 来抓取就可以了:



给一个在控制台里面输出的效果:



最后,这篇文章给出了我在写 X 房网爬虫的整个分析的思路。


Garfield_Liang,Python中文社区专栏作者。

原文:http://www.jianshu.com/u/cac1d39abfa9



你会感兴趣的内容:


知识解密非营利性 APP 赚钱秘籍:Charles 抓包

【干货】用 Python 实现每秒处理 120 万次 HTTP 请求

【案例】上司靠近你座位时,用人脸识别技术及时屏幕切换



内容转载自公众号

投诉
本文由AB模板网:织梦模板整理发布, 转载请说明出处:https://www.mobanhu.com
随机站长资讯
高级精美的家私企业网站源码 家私家纺类网
农业绿色生态水果企业dede源码
驾校类企业网站源码 驾校网站模板
绿色LED灯管类织梦源码 照明企业网站模板
蓝色通用织梦博客模板 资讯文章类网站源码
红色大气装饰公司织梦源码 建筑装修装潢企
网站建设企业模板 互联网网络营销类网站源
html5响应式手机自适应网站模板(兼容手机
黑色HTML5工作室网络公司网站整站模板(适
简洁大气网站建设网络设计类企业织梦模板
html5+css3高端网站建设工作室源码 酷炫的h
红灰色大气网络工作室织梦模板
织梦dedecms幻灯片模糊解决办法
织梦dedecms巧用标签实现图片自动Alt功能,
织梦dedecms文章列表循环标签增加notypeid
织梦dedecms专题模板应用分析及使用案例
dedecms织梦让二级栏目标题去除“/”斜杠和
关于出现“对不起,您安装的不是正版应用..
Discuz(Can not write to cache files)有关
Discuz通过修改文章标题更好的实现SEO的方
DiscuzX中存在不合法的文件被上传的修复方
关于Discuz x3.1页面空白解决方法
通用营销工业机械展示型企业织梦模板 电子
简洁外贸公司电子科技产品网站源码 白色织
蓝色大气的通信类电子科技企业通用网站源码
娱乐多媒体类企业公司织梦模板 娱乐设备网
高端大气数码产品电子类企业源码模板
高级精美的家私企业网站源码 家私家纺类网
农业绿色生态水果企业dede源码
驾校类企业网站源码 驾校网站模板
绿色LED灯管类织梦源码 照明企业网站模板
蓝色通用织梦博客模板 资讯文章类网站源码
红色大气装饰公司织梦源码 建筑装修装潢企
网站建设企业模板 互联网网络营销类网站源
html5响应式手机自适应网站模板(兼容手机
黑色HTML5工作室网络公司网站整站模板(适
简洁大气网站建设网络设计类企业织梦模板
html5+css3高端网站建设工作室源码 酷炫的h
红灰色大气网络工作室织梦模板
织梦dedecms幻灯片模糊解决办法
织梦dedecms巧用标签实现图片自动Alt功能,
织梦dedecms文章列表循环标签增加notypeid
织梦dedecms专题模板应用分析及使用案例
dedecms织梦让二级栏目标题去除“/”斜杠和
最新站长资讯
高级精美的家私企业网站源码 家私家纺类网
农业绿色生态水果企业dede源码
驾校类企业网站源码 驾校网站模板
绿色LED灯管类织梦源码 照明企业网站模板
蓝色通用织梦博客模板 资讯文章类网站源码
红色大气装饰公司织梦源码 建筑装修装潢企
网站建设企业模板 互联网网络营销类网站源
html5响应式手机自适应网站模板(兼容手机
黑色HTML5工作室网络公司网站整站模板(适
简洁大气网站建设网络设计类企业织梦模板
html5+css3高端网站建设工作室源码 酷炫的h
红灰色大气网络工作室织梦模板
织梦dedecms幻灯片模糊解决办法
织梦dedecms巧用标签实现图片自动Alt功能,
织梦dedecms文章列表循环标签增加notypeid
织梦dedecms专题模板应用分析及使用案例
dedecms织梦让二级栏目标题去除“/”斜杠和
关于出现“对不起,您安装的不是正版应用..
Discuz(Can not write to cache files)有关
Discuz通过修改文章标题更好的实现SEO的方
DiscuzX中存在不合法的文件被上传的修复方
关于Discuz x3.1页面空白解决方法
通用营销工业机械展示型企业织梦模板 电子
简洁外贸公司电子科技产品网站源码 白色织
蓝色大气的通信类电子科技企业通用网站源码
娱乐多媒体类企业公司织梦模板 娱乐设备网
高端大气数码产品电子类企业源码模板
高级精美的家私企业网站源码 家私家纺类网
农业绿色生态水果企业dede源码
驾校类企业网站源码 驾校网站模板
绿色LED灯管类织梦源码 照明企业网站模板
蓝色通用织梦博客模板 资讯文章类网站源码
红色大气装饰公司织梦源码 建筑装修装潢企
网站建设企业模板 互联网网络营销类网站源
html5响应式手机自适应网站模板(兼容手机
黑色HTML5工作室网络公司网站整站模板(适
简洁大气网站建设网络设计类企业织梦模板
html5+css3高端网站建设工作室源码 酷炫的h
红灰色大气网络工作室织梦模板
织梦dedecms幻灯片模糊解决办法
织梦dedecms巧用标签实现图片自动Alt功能,
织梦dedecms文章列表循环标签增加notypeid
织梦dedecms专题模板应用分析及使用案例
dedecms织梦让二级栏目标题去除“/”斜杠和
关于出现“对不起,您安装的不是正版应用..
Discuz(Can not write to cache files)有关
Discuz通过修改文章标题更好的实现SEO的方
DiscuzX中存在不合法的文件被上传的修复方
关于Discuz x3.1页面空白解决方法
首页 免费源码 VIP专区 会员中心
收缩