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

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

作者: 是落阳呀 | 来源:发表于2020-03-02 16:22 被阅读0次
划一下重点:本文更适合于有一定的爬虫基础的人来学习
最好需要对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全站爬虫源码获取方式:关注微信公众号【程序小员】后台发送房天下爬虫

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

相关文章

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

    划一下重点:本文更适合于有一定的爬虫基础的人来学习 最好需要对scrapy框架有一定的了解,(没有的话也没关系,来...

  • Scrapy抓取拉勾网招聘信息(一)

    前段时间自己做了个互联网职位分析的网站,本文将记录下整个数据获取的全部过程,之后还会有对数据进行可视化操作的介绍。...

  • 全部的我给你

    Part of me wants to love you Part of me know I can Part o...

  • 给你,我的全部

    曾想,就这样爱你 十年,二十年 每一个朝出日落的日子 像我钟爱的一首老歌 泛白的衬衫 还有 一起共度的时光 那个明...

  • 给你最好的

    想把整个夏天的阳光,在冬天的时候全部寄给你。 ...

  • react-native完整实例—妹子图片查看app

    项目目前只支持android版本,因为使用到jsoup抓取网站数据,而ios开发本人不会。数据来源全部来自网站【h...

  • element table点击或hover编辑时,控制元素显示隐

    table表格数据只能监听整个row的变化,这里需要更新整个row数据 就可以啦

  • 我给你全部自由

    似乎每一个喜欢五月天的人,都有一首属于自己的歌。似乎多多少少,总有些故事与之有关。 1、 顾都,是孤独的顾都。 从...

  • 我要全部给你

    一直最不忍心的就是我会先你离开这个世界!最痛心的是就自此怕看你无数个傍晚你在在夕阳里被拉得长长的孤独的影子, 所以...

  • 温柔的还你自由

    文|白城 “我给你自由,我给你自由,我给你全部全部全部全部自由” 有人告诉我,他不记得温柔这首歌的调子了,不记得是...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/vsuvkhtx.html