专栏首页谭小谭python采集链家二手房信息

python采集链家二手房信息

都说现在的房价很高,具体有多高呢,我们一起来看看。

现在网上关于房子的价格以及交易信息鱼龙混杂,与实际情况相差比较大,目前链家平台的数据应该是相对比较可靠的,所以这次我们就打算去链家爬一爬。

说到爬虫,前面也有说过,无非就三个主要的步骤

1、获取目标网页或接口

2、从目标网页或接口中解析并提炼出你要的数据字段

3、数据保存

我们今天就以链家平台上北京地区二手房为例,首先是打开目标网页。

https://bj.lianjia.com/ershoufang/

网页下面有分页,一共提供了 100 页数据,也就是说这 100 页都是我们的目标网页,所以第一件事就是要获取到总页数。

打开开发者模式可以看到,有个字段 totalPage 字段,这个字段就是总页数,如下图。

有了总页数之后呢,接下来就是要对这 100 个页面循环解析了,把我们要的字段和数据都解析出来。

为了获取更详细的数据,这里我们进入到详情页去解析数据,同样打开开发者模式,看到有总价 total(总价)、unitPriceValue(单价)、areaName(位置)等字段,这些就是我们要获取的主要字段。

解析得到字段数据后,就要把数据保存起来,保存数据的方式一般有保存到数据库(Mysql、MongoDB)和保存到本地文件(txt、excel、csv),为了方便起见,这里我们将数据只保存到本地 csv 文件。

上面说的就是这个爬虫的大致过程,下面是一段主要代码,在公众号后台回复关键字【链家】可获取完整代码,有需要 csv 文件数据的也可以后台私信联系我哈。

    def getContent(self, url):
        totalPage = self.getTotalPage(url)
        totalPage = 2 #为了方便调试,我这里把总页数写死了
        # 循环处理每个目标页面
        for pageNum in range(1, totalPage+1 ):
            url = "https://bj.lianjia.com/ershoufang/pg{}/".format(pageNum)
            print("正在获取第{}页数据: {}".format(pageNum,url))
            response = requests.get(url, headers = self.headers)
            soup = BeautifulSoup(response.text, "html.parser")
            links = soup.find_all("div", class_ = "info clear")
            for i in links:
                link = i.find("a")["href"]
                detail = self.parseDetail(link)
                self.datas.append(detail)
                #为了防止反爬限制休眠1s
                time.sleep(1)

        # 数据存储到csv文件中
        data = pd.DataFrame(self.datas)
        # 自定义字段
        columns = ["小区", "户型", "面积", "价格", "单价", "朝向", "电梯", "位置", "地铁"]
        data.to_csv("./lianjiaData.csv", encoding='utf_8_sig', index=False, columns=columns)

推荐文章:

下载抖音无水印视频

介绍一个好玩的

本文分享自微信公众号 - 谭小谭(tanstory),作者:谭小谭

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mysql删除操作其实是假删除

    在 InnoDB 中,你的 delete 操作,并不会真的把数据删除,mysql 实际上只是给删除的数据打了个标记,标记为删除,因此你使用 delete 删除表...

    谭小谭
  • mysql索引为啥要选择B+树 (下)

    有读者在 mysql索引为啥要选择B+树 (上) 上篇文章中留言总结了选择 B+ 树的原因,大体上说对了,今天我们再一起来看看具体的原因。

    谭小谭
  • 大白话说说mysql

    前面其实写了好几篇关于 mysql 索引的文章了,文章中有具体的实例和 sql 语句,这篇文章我想再用纯大白话讲讲 mysql 索引,文中不涉及具体 sql 。

    谭小谭
  • 聊聊流计算系统中的核心问题:状态管理

    状态管理是流计算系统的核心问题之一。在实现流数据的关联操作时,流计算系统需要先将窗口内的数据临时保存起来,然后在窗口结束时,再对窗口内的数据做关联计算。在实现时...

    实时计算
  • 数据挖掘实践指南读书笔记6

    http://guidetodatamining.com/ 这本书理论比较简单,书中错误较少,动手锻炼较多,如果每个代码都自己写出来,收获不少。总结:适合入门。...

    公众号---人生代码
  • 用编程赋能工作系列——解锁合并单元格问题

    能把学习的编程技能用在实际工作中,提升效率、解决痛点、释放生产力,个人觉得是学习编程技能ROI最高的回报,而非都要挤破头成为数据科学家、算法工程师,毕竟这些职业...

    数据小磨坊
  • 纷享销客携手分贝通达成互为赋能的战略合作伙伴 | 腾讯SaaS加速器·案例库

    ? 近日,连接型CRM开创者纷享销客与企业支出管理领导者分贝通达成战略合作,双方将融合各自的技术实力和行业优势展开深度合作,实现业务数据与费用数据的打通,从开...

    腾讯SaaS加速器
  • 数据驱动:传统企业互联网化 互联网业务传统化

    最近接受媒体“SP睿商在线”的采访,谈了一下我对2014年行业发展的一点看法,总结一下,就是“数据驱动:传统企业业务互联网化,互联网企业业务传统化”,转引一下媒...

    数据和云
  • 为什么说 Storm 比 Hadoop 快?

    “快”这个词是不明确的,专业属于点有两个层面: 1.时延 , 指数据从产生到运算产生结果的时间,题主的“快”应该主要指这个。 2. 吞吐, 指系统单位时间处理的...

    CSDN技术头条
  • python unittest关键API说明及示例

    前言 本次就python unittest单元测试框架的一些基本的、常用的API 进行分享,以便大家后续更深入的熟悉和应用unittest。 TestCase类...

    苦叶子

扫码关注云+社区

领取腾讯云代金券