看我如何抓取最新房价数据

经过前几年一轮房价大涨,到现在因为国家大力调控等原因,市场已经褪去热度,正在慢慢变得稳定,价格也相较最高时下降了些。那现在房价到底怎样?接下来又会是怎样的发展的趋势?这里我们就可以通过 Python 把最近的房价数据抓取下来进行分析。

模块安装

这里需要安装以下模块,当然如果已安装就不用再装了:

# 安装引用模块pip3 install bs4pip3 install requestspip3 install lxmlpip3 install numpypip3 install pandas

配置请求头

一般我们在抓取网站时,为了应对网站的反爬机制,我们会把请求的头信息进行封装处理,以下是最简单的处理,就是将请求客户端信息进行随机选择并使用,代码如下:

# 代理客户端列表USER_AGENTS = [    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",    "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",    "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",    "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",    "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",    "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",    "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",    "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",    "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",]
# 创建请求头信息def create_headers():    headers = dict()    headers["User-Agent"] = random.choice(USER_AGENTS)    headers["Referer"] = "http://www.ke.com"    return headers

配置代理IP

除了上面配置请求头外,如果你用相同的 IP 大量请求抓取时,很可能会被封 IP,被封后再用这个 IP 请求网站时,会提示你请求超时,为避免被封最好我们通过代理 IP 去抓取,怎样才能找到能用的代理 IP?

# 引入模块from bs4 import BeautifulSoupimport requestsfrom lib.request.headers import create_headers
# 定义变量proxys_src = []proxys = []
# 请求获取代理地址def spider_proxyip(num=10):    try:        url = 'http://www.xicidaili.com/nt/1'        # 获取代理 IP 列表        req = requests.get(url, headers=create_headers())        source_code = req.content        # 解析返回的 html        soup = BeautifulSoup(source_code, 'lxml')        # 获取列表行        ips = soup.findAll('tr')
        # 循环遍历列表        for x in range(1, len(ips)):            ip = ips[x]            tds = ip.findAll("td")            proxy_host = "{0}://".format(tds[5].contents[0]) + tds[1].contents[0] + ":" + tds[2].contents[0]            proxy_temp = {tds[5].contents[0]: proxy_host}            # 添加到代理池            proxys_src.append(proxy_temp)            if x >= num:                break    except Exception as e:        print("获取代理地址异常:")        print(e)

房价数据对象

在这里我们将新房的房价信息,创建成一个对象,后续我们只要将获取到的数据保存成对象,再处理就会方便很多。NewHouse 对象代码如下所示:

# 新房对象class NewHouse(object):    def __init__(self, xiaoqu, price, total):        self.xiaoqu = xiaoqu        self.price = price        self.total = total
    def text(self):        return self.xiaoqu + "," + \                self.price + "," + \                self.total

获取房价信息并保存

好了,做好以上准备,下面我们就以贝壳为例,批量爬取其北京地区新房数据,并保存到本地。其实只要能抓取到数据,想保存成什么格式都可以,当然也可以保存到数据库。这里我主要想说的是如何抓取数据,所以这里就保存成最简单的 txt 文本格式。

# 创建文件准备写入with open("newhouse.txt", "w", encoding='utf-8') as f:    # 获得需要的新房数据    total_page = 1    loupan_list = list()    page = 'http://bj.fang.ke.com/loupan/'    # 调用请求头    headers = create_headers()    # 请求 url 并返回结果    response = requests.get(page, timeout=10, headers=headers)    html = response.content    # 解析返回 html    soup = BeautifulSoup(html, "lxml")
    # 获取总页数    try:        page_box = soup.find_all('div', class_='page-box')[0]        matches = re.search('.*data-total-count="(\d+)".*', str(page_box))        total_page = int(math.ceil(int(matches.group(1)) / 10))    except Exception as e:        print(e)
    print('总页数:' + total_page)    # 配置请求头    headers = create_headers()    # 从第一页开始遍历    for i in range(1, total_page + 1):        page = 'http://bj.fang.ke.com/loupan/pg{0}'.format(i)        print(page)        response = requests.get(page, timeout=10, headers=headers)        html = response.content        # 解释返回结果        soup = BeautifulSoup(html, "lxml")
        # 获得小区信息        house_elements = soup.find_all('li', class_="resblock-list")        # 循环遍历获取想要的元素        for house_elem in house_elements:            price = house_elem.find('span', class_="number")            desc = house_elem.find('span', class_="desc")            total = house_elem.find('div', class_="second")            loupan = house_elem.find('a', class_='name')
            # 开始清理数据            try:                price = price.text.strip() + desc.text.strip()            except Exception as e:                price = '0'
            loupan = loupan.text.replace("\n", "")            # 继续清理数据            try:                total = total.text.strip().replace(u'总价', '')                total = total.replace(u'/套起', '')            except Exception as e:                total = '0'
            # 作为对象保存到变量            loupan = NewHouse(loupan, price, total)            print(loupan.text())            # 将新房信息加入列表            loupan_list.append(loupan)
    # 循环获取的数据并写入到文件中    for loupan in loupan_list:        f.write(loupan.text() + "\n")

代码写好了,现在我们就可以通过命令 python newhouse.py 运行代码进行数据抓取了。抓取的结果如下图所示:

总结

本文为大家介绍了如何通过 Python 将房产网上的新房数据批量抓取下来,然后就可以将每天抓取的结果跟历史数据进行对比分析,来判断楼市的大概趋势。其中涉及到了用 BeautifulSoup 进行 html 解析,整个代码来看实现方式并不难,希望通过这个过程可以为你提供一些帮助。

 在学编程,学Python的小伙伴们,一个人摸黑学会很难,博主也是过来人, 这里新建了一个扣群:1020465983,给大家准备了学习资源、好玩的项目,欢迎大家加入一起交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27312.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬取上海链家网二手房数据

1、数据爬取说明 1.1 爬取目的 一个朋友在学习自考,作业是爬取数据进行数据分析,正好最近我在学习python,所以他委托我帮他完成这一工作 1.2使用模块 requests进行网络请求、bs4进行数据解析、xlwt进行excel表格存储 2、网页结构分析 2.…

购房选址分析之上海市

一日不见,如隔三秋。快过年了,凌晨GIS给大家拜个早年,提前祝大家新年快乐,牛气冲天! 上期我们用矢量分析中的缓冲区分析和叠加分析的方法对长沙市的购房选址方面的问题进行了探讨,得到了许多小伙伴的回应&a…

链家全国房价数据分析 : 数据分析及可视化

相关文章:链家全国房价数据分析 : 数据获取 上一回我们提到了用爬虫爬取链家的新楼盘和二手房数据信息,这回我们来看看如何对他们进行分析。 新楼盘数据分析 因为我们爬的时候是一个个城市爬的,现在我们要把他们合在一起&#x…

大数据统计租房市场现状(上海篇)

对某方面有统计需求的同学可以留言哟~O(∩_∩)O~!!! 数据下载时间:20170620 房间均价:为了对比1房,2房,3房哪个比较划算引入的概念。一条出租信息中,平均每个房间的价格&#xff0c…

链家全国房价数据分析 : 数据获取

最近一直在看论文,也有很久没有coding了,感觉对爬虫的技术有些生疏,我觉得即使现在手头没有在做这方面的东西,经常爬点对技术保鲜还是很重要的。所以这次我打算爬链家的房价数据,目的主要是对爬虫和Python的东西作一个…

上海二手房网站

文章目录 简介git总体架构开发目录 简介 业务目标:实现上海二手房全量数据动态更新、统计、汇总展示,了解二手房变化趋势。 技术目标:前端到后端技术的demo。前身:租房网站。毕业2年需求变更:租房->买房… git 前…

上海的二手房价有所下跌,现在你们的工资够买间厕所了吗?Python帮你分析上海的二手房价

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:林小呆 仪表板展示 项目背景 去面试的时候被问上海二手房的一些情况,作为一个土著,我只知道上海这个区…

上海二手房价数据分析

目的:本篇给大家介绍一个数据分析的初级项目,目的是通过项目了解如何使用Python进行简单的数据分析。 数据源:博主通过爬虫采集的安X客上海二手房数据,由于能力问题,只获取了2160条数据。 数据初探 首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seaborn im…

NBA球员投篮数据可视化

最近看了公众号「Crossin的编程教室」的一篇文章。 是有关于NBA球员出手数据的可视化案例,原文链接如下。 个人感觉比较有趣,所以想着自己也来实现一波。 总体上来说差不多,可能就是美观点吧... / 01 / 篮球场 从网上找的篮球场尺寸图&#x…

利用Python进行NBA比赛数据分析

利用Python进行NBA比赛数据分析 一、实验介绍 1.1 内容简介 不知道你是否朋友圈被刷屏过nba的某场比赛进度或者结果?或者你就是一个nba狂热粉,比赛中的每个进球,抢断或是逆转压哨球都能让你热血沸腾。除去观赏精彩的比赛过程,我们…

2021年常规赛NBA球员数据分析

项目介绍: 1、数据来源: 1)数据来源腾讯体育NBA数据,爬虫解析三个JS网页解析获得数据,共有150个球员和22个指标,整理后数据最终如下图格式 2)球队队徽来自网络 3)球队地理位置的经…

kaggle:NBA球员投篮数据分析与可视化(一)

作为数据科学领域的金字招牌,kaggle已成为世界上最受欢迎的数据科学竞赛平台。在kaggle上,每个竞赛题下都藏匿着大批来自世界各地并且身怀绝技的数据科学家。作为一种众包模式,kaggle通过收取部分佣金将企业的数据挖掘问题发布在平台上并设立…

实例:【基于机器学习的NBA球员信息数据分析与可视化】

文章目录 一、项目任务二、代码实现及分析1. 导入模块2. 导入文件并对文件信息进行整体探测3. 数据预处理3.1 查看数据集信息3.2 数据清洗与转换3.3 数据去重 4. 数据可视化4.1 数据相关性4.2 球员数据分析 5. 基于逻辑回归的球员分类5.1 数据重定义5.2 划分数据集与验证集5.3 …

利用Python预测NBA比赛结果

关注「实验楼」,每天分享一个项目教程 NBA总决赛正在火热上演,而有数据的地方就有预测,本教程就教你使用Python预测NBA比赛的结果。 正文共:3240 字 预计阅读时间:8 分钟‍ 一、实验介绍 1.1 内容简介 不知道你是否…

PayPal,Stripe,Square轮询支付系统

轮询展示 展示我们轮询的页面 轮询套餐 根据不同的用户和需求,可以选择不同的套餐 普通版 1500元 1年 1个用户 支持Paypal/Stripe 不限制A站个数 不限制B站个数 不限制提交模式 订单管理 物流管理 风控管理 必要的网站数据处理 24小时远程协助 开始…

使用chatgpt过掉邮生活滑块记录 ob+wasm print参数

****## 邮生活滑块记录 地址 :‘aHR0cHM6Ly95b3VzaGVuZ2h1by4xMTE4NS5jbi93eC8jL2xheGluUmVnaXN0P3VzZXJJZD0yMTA1NTQ2MTYxOSZhY3Rpdml0eUlkPTI4MiZydWxlSWQ9Mjg’ 如图 如上图 大概就这点参数 基本都是前面请求拿的 除了print enmiid 。。。。。。 结果&#xff1…

连续支付(周期扣款)功能开发及注意事项

最近有一个版本需求,需要接入周期扣款做连续会员的功能,没想到这一做就是小半个月,趟了很多坑,所以觉得有必要记录一下 1.周期扣款总体设计 在支付宝和微信中(非苹果支付),周期扣款的流程主要有…

证监会计算机类笔试上岸经验,公务员考试笔试166分上岸经验(全干货)

原标题:公务员考试笔试166分上岸经验(全干货) 一、考前自审 1、具备公务员考试需要的相关知识结构与基本素质(70%)。包括政治素质(理解和掌握国家大政方针与政策),基本科学素质,常识,阅读理解能力,语言功底&#xff0c…

行政职业能力测试软件,公务员行政职业能力测试考试宝典

公务员行政职业能力考试宝典是一款通用的考试练习软件,丰富的题库,包含历年真题和模拟试题,有时间就可以开启刷题模式,对于错误的题目可以进行错题重做、解题思路介绍、统计分析等,达到熟练的程度,大大提高…

一政网是真实助公考上岸的吗?

在当下的经济时代,需要不断的学习,不断的提升自我。报考公务员考试成为了不二选择。报考公务员考试成为了毕业生、在职员工、宝妈等等众多不同类型人的最佳选择。但是公务员考试的难度大,想要公考一次上岸,那么就必需选择报班学习…