二手房价格及信息爬取

↑ 关注 + 置顶 ~ 有趣的不像个技术号

 

本文为读者投稿,作者:董汇标MINUS

知乎:https://zhuanlan.zhihu.com/p/97235643

有一天,哥们群里聊到买房问题,因为都上班没几年,荷包还不够重。

然后我就想可以参考某家数据研究研究,房价什么情况了。

爬取准备

某家网站里有新房、二手房、租房等待。如果买房,尤其是在北京的首套,可能二手房是选择之一,那我就针对二手房研究一下。

虽然网上有很多数据源或者教程,但我还是打算重新抓一遍,一是保持数据是最新的,而是练手不犯懒。

需要技能:BeautifulSoup解析数据--正则表达式提取数据--csv存储数据

爬虫思路:常规网站爬虫思路

上图是某家二手房展示页面其中一套房的信息,我需要提取它的:位置、几室几厅、平米数、朝向、装修风格、层数、建造年份、建筑形式、售价。

然后通过HTML分析,找到他们对应的字段(这块爬虫教学里很多,不赘述)

from bs4 import BeautifulSoup
import re
import csv
import requests
import pandas as pd
from random import choice
import time

因为链家二手房一共100页,所以很明确的新建一个csv文档,把它名字取好,把列设置好。

columns = ['小区', '地区', '厅','平米数','方向','状态','层','build-year','形式','钱','单位','网址','推荐语']
# 如果文件由第一行,就不用了
with open('链家二手房100页.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file, delimiter=',')
    writer.writerow(columns)
    file.close()

数据爬取

1. 100页那就写一个循环进行取数

2. 用BeautifulSoup进行页面数据解析

3. 通过正则表达式提取对应字段位置

4. 把提取的信息写入刚刚说的csv文件

5. 为了方便知道进度,在每页结尾加上打印,知道进度

6. 为了防止"给链家服务器带来压力“选择每页隔几秒再切换下页

7. 所有爬完了,打印一个fin~(这是我个人习惯)

i=1
for j in range(100):
    urll = base_url1+ str(i) +base_url2
    print(urll)
    i += 1
    get_page=requests.get(urll)
    bs_page = BeautifulSoup(get_page.text, 'html.parser')
    list_house = bs_page.findAll('div', class_='info clear')
    for house_one in list_house:

        house_info    = house_one.find_all('div', class_='houseInfo')
        position_info = house_one.find_all('div', class_='positionInfo')
        totalPrice    = house_one.find_all('div', class_='totalPrice')
        href          = house_one.find_all('div', class_='title')

        # 正则提取
        # 小区名,位置
        position_str  =re.findall('_blank">(.+)</a.+_blank">(.+)?</a', str(position_info))
        position_str1 =list(position_str[0])
        # print(type(position_str1),position_str1)

        # 房子信息
        house_info_str=re.findall('span>(.+)?</div>', str(house_info))
        house_info_str = str(house_info_str)[2:-2].split('|')
        # print(type(house_info_str), house_info_str)


        totalPrice_str=re.findall('<span>(.+)</span>(.+)</div>', str(totalPrice))
        totalPrice_str = list(totalPrice_str[0])
        # print(type(totalPrice_str), totalPrice_str)


        href_str      =re.findall('http.+html', str(href))
        # print(type(href_str), href_str)

        AD_str = re.findall('_blank">(.+)?</a>', str(href))
        # print(type(AD_str), AD_str)

        house_all = position_str1 + house_info_str + totalPrice_str + href_str + AD_str

        print(house_all)

        # writer.writerow()
        with open('链家新房100个.csv', 'a', newline='', encoding='utf-8') as file:
            writer = csv.writer(file, delimiter=',')
            writer.writerow(house_all)
            file.close()

    print(f'---第{i}页---')
    times = choice([3, 4, 5, 6])
    print(f'sleep{times}\n')
    time.sleep(times)
print('fin')

数据概况

当上边数据跑完了后,可以看到一个表格,打开后数据情况如下:

可以看到,小区名、地点、房型、平米数、方向、层数、建造年代、楼房形式、售价、对应详情页网址就都有啦~

如何利用这些数据进行数据分析?

见本公众号另一篇文章。

本文为读者投稿,作者:董汇标MINUS,首发于知乎,原文地址可以点击左下角原文链接。

对文中有疑问可以后台回复“进群”,加入交流群与原作者一起交流。

公众号《凹凸玩数据》,有趣的不像个技术号~ 

欢迎大家投稿!

End

点个好看再走吧 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 安居客出租(武汉为例)虫+数据分析+可视化 这个虫是我前段时间在淘宝上做单子的时候遇见的一个客户需求。本来以为就是一个简单的虫项目。但后面客户加了数据清洗和数据分析的要求。而后又加了要详细代码解释的需求等等。直到最后客户坦白说这是他们大专的毕设.......但是这个单子坐下来只有200左右,我想了一下,感觉好亏啊。在淘宝上随便找一个做毕设的都要好多钱的,而且客户本身的代码能力、数学、逻辑能力都很差,导致我每行都给注释以及看不懂,在我交付代码后又纠缠了我一个多礼拜。反正总体做下来的感觉就是烦躁。头一次感觉到了客户需求变更带来的巨大麻烦。 总之这是一次不是很愉快的虫经历。但是作为我写虫以来注释最详细的一次,以及第一次真正使用像matplotlib这种数据分析库的代码,我认为还是有必要分享出来给大家当个参考的(PS:大佬轻拍~)。虫本身几乎没有什么难度,写的也比较乱,敬请见谅。 **功能** 安居客上的出租信息(武汉地区的),并通过的数据进行数据清洗以及数据分析。给出四个不同层面的可视化图。最终结果如下图所示: ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/1.png) ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/2.png) ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/3.png) ![Image text](https://raw.githubusercontent.com/srx-2000/git_spider/master/anjuke_room_rent_info/result/4.png) **环境** 1. Windows 10 2. python3.7 **使用方法** 首先声明该虫由于是特定情况下写的,所以本身的通用性特别差,仅可以对安居客网站上的武汉的出租信息进行,且需要自己手动更新cookie。同时在对数据进行分析及可视化的时候由于也是特别针对武汉出租的进行的,所以针对性也比较强。如果别的需求需要自己进行更改。 1. 访问[安居客网址](https://wuhan.anjuke.com/),获cookie。 > tip:获cookie的方法可根据[此链接](https://jingyan.baidu.com/article/5d368d1ea6c6e33f60c057ef.html) 2. 在项目中找到`spider.py`的文件,将第12行的cookie换成你自己的cookie。 3. 运行`spider.py`,获信息。运行后应会产生一个`武汉出租源情况.csv`的文件。此文件为我们从安居客上信息,其中包含`屋租住链接、屋描述、屋地址、屋详情(户型)以及经纪人、价格`五个属性。 4. 在获了数据之后我们运行`matplotlib.py`文件。进行数据清洗,分析,可视化。运行后即可获得**功能**中展示四个图片。 **技术栈** 1. request 2. parsel 3. pandas 4. matplotlib **进步(相比之前)** 此次虫相比之前的技术上可以说有减无增。但其中注释相当详细,可谓是每行代码都有注释。所以对于初学者应该有一些用处。同时使用matplotlib进行了数据分析可视化等。对于数据处理的代码的注释也是几乎每行都有注释的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱小五是凹凸君呀

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值