一整个网站的全部数据,我只能给你这么多了。

划一下重点:本文更适合于有一定的爬虫基础的人来学习
最好需要对scrapy框架有一定的了解,(没有的话也没关系,来看个思路)
由于文章篇幅和图片数量限制,我不太可能一步步分析过程全部截图和用文字说出来,所以需要自己研究,觉得不懂的话我会将源码获取方式放到底部。
当前时间是2020-3-2,只能保证相差不远的时间爬虫有效,毕竟网页结构会变。

前言:

前两天使用爬虫爬取了房天下全国六百多个城市所有的新房和二手房信息,包括小区名字房子面积,原始url,几居几室,位置地址等数据信息。
代码量看起来有点多,但是大部分都是框架自带的代码,整个爬虫的逻辑很简单。
本爬虫爬取的内容没有使用ajax异步请求加载的,所以相对简单。
我会放一部分爬取下来的数据的截图放在文末

前期准备:

  • 安装scrapy库: pip install scrapy

用到的库

  • re(内置)
  • scrapy(需要安装)
  • random (内置)

分析需求:

我们要爬取的网站是房天下全国所有的城市的新房和二手房信息,首先进入房天下官网查看页面


房天下官网首页

显然这里不方便作为我们爬虫的开始页面,爬虫爬取网站需要一个结构化一点的,信息聚集排列比较整齐的页面。
经过一番查找进入到这个页面城市页面

城市页面

ok从这里我们已经完全可以拿到所有城市的入口页面,是一个很理想的开始页面。

这里的每个城市都是一个链接,代表对应城市的房天下首页。
从这个页面中呢,我们让scrapy爬取所有的省份和它对应的城市,以及这个城市对应的首页链接。(通过审查元素,这个页面没有ajax异步加载,放心!)

例如,上海的首页链接就是http://sh.fang.com/

房天下

然后我们就可以从这里获取到它的新房列表页面和二手房列表页面。

我们依旧以上海为例,上海的新房页面链接和二手房页面链接分别是:
https://sh.newhouse.fang.com/house/s/
https://sh.esf.fang.com/
发现规律没有?

新房链接 = 首页链接中间 插入 .newhouse. + 首页链接末尾 加上 house/s/
二手房链接 = 首页链接中间插入 esf.

有了这个规律,现在就相当于我们从城市列表就能直接获取到所有城市的新房列表和二手房列表的url,这就很nice! (反正我是拼接获取到了,你们加油,手动狗头)

现在我们先分析新房的页面


新房界面

经过分析我们可以知道

所有的这些一个个类似列表的盒子是一个个li元素(这里负责任的告诉大家,我不可能是打广告的,哪有通过教你们爬虫来给它打广告的方式。)

然后我们获取li元素列表

这里需要提醒大家的是,前两个li元素是ajax异步加载的,我估摸着应该是花了钱打广告上去的,这一部分我们不需要爬取。同时,获取li元素列表的时候,会发现li元素列表里面有个奸细,会导致你出错,看图⬇️

元素分析

通过上面这张图,大家对它的内容的排放也有基本了解了。
然后我们开始分析我们需要从每个li元素里面获取的内容
获取的内容

好了这些就是我们要爬下来的内容,全部都在li元素里面,由于这里就是一些重复的工作,我就不带大家一一分析了。
好我这里就当大家能爬取出每个li元素里面的内容了哈,我们进入下一个部分
当前我们只爬取了这一个页面,而就算爬完所有城市也不过每个城市爬了一个页面而已,我们要能够翻页。
新房翻页

下一页的网址就藏在这里,很好找,我们提取出这个元素里面的href属性,再用sh.newhouse.fang.com/来拼接一下,就成功得到下一页的网址了。

我们进入下一页,再爬下来想要的数据存储,再进入下一页,周而复始,直到最后一页,没有了这个下一页的元素会自动停止。

到这里呢,新房的数据就全部爬取完成!我们进入二手房页面分析元素

二手房元素分析

同样的,这里的列表一样的内容都是一个个dl元素组成的,但是这里就没有广告位了(我的理解是,个人毕竟没有这么多钱来打广告嘛)。

但是与新房页面相同的是,这里同样藏着个奸细,观察上图的审查元素可知,有一个 dl元素的style="bgcomare"而其他的都是bg这就是奸细!

我们在获取dl列表的时候同样需要抛弃这个元素。

然后呢就进入到了内容爬取时间


二手房爬取内容

这些就是需要爬下来的内容了。
啪嗒啪嗒,一顿分析元素获取文本内容之后~
现在进入翻页时间,我们分析一下下一页元素


二手房下一页

这个时候你会发现,这里的p元素只能用序号来定位,而没有专门的class名或者id名,本来呢,这也不是什么大问题,但是偏偏现在这个p的顺序位置是在变动的,

因为当我们处于第一页的时候,前面没有出现首页上一页这两个按钮,而这两个按钮也是同级的p标签!

所以这里我们采用倒序,倒数第三个p标签,就是下一页本尊。

这里可能有人要发问了:那照这么说,到了最后一页获取p标签不是还会出错?

这里跟大家解释一下,当到了最后一页的时候,确实下一页第xx页就消失了,倒数第三个p标签反而跑到前面的页面去了,会不会造成无限循环?

答案是:不会,因为我们使用的scrapy框架,这个框架有自动调度,不重复抓取同一个页面的功能。

数据存储

使用scrapy的管道来进行存储,因为这些数据我拿着也没用,就直接用一个json文件将爬到的数据存储了起来,同样在源码当中。

数据展示

新房数据

新房数据

二手房数据

二手房数据

末尾

到这里呢,我们已经基本爬取完成了房天下网站所有城市新房二手房的数据了,没骗你们吧,就是这么简单。

提醒大家一句哈,由于数据量太大, 记得设置延迟,不要对人家服务器造成压力,做人留一线,然后就是,scrapy爬虫记得添加暂停功能。

scrapy全站爬虫源码获取方式:关注微信公众号【程序小员】后台发送房天下爬虫

我是落阳,一个正在努力成长的人,谢谢你的到访!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,552评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,666评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,519评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,180评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,205评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,344评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,781评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,449评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,635评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,467评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,515评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,217评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,775评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,851评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,084评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,637评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,204评论 2 341