查看原文
其他

快来看看武汉的房价是不是又双叒叕涨了!

爬虫俱乐部 Stata and Python数据分析 2023-10-24

本文作者:孟孔,中南财经政法大学金融学院

本文编辑:胡艺粼

技术总编:孙一博

Stata and Python 数据分析

爬虫俱乐部Stata基础课程Stata进阶课程Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~

马上奔3的崽了,房子、车子和孩子都要准备一下呀,不然怎么能够有幸福的基础嘞?房子是我们人生中需要解决的一个大问题,牵动着数以万计的年轻人的心!今天,小编带你看一看,武汉市的近几年的房价情况,是不是又双叒叕涨了!打算定居武汉的伙伴们,鸭梨是不是比山还要大?

小编教你如何使用python爬取城市的房价,本文选取“安居客”中介平台的房价作为本文的数据来源,对武汉各区的房价进行爬取,当然也可以根据本文的代码对区、县一级的房价进行爬取。

1. 环境准备

我们需要准备requests、lxml、pandas等第三方库,所以在使用之前需要进行安装。具体安装程序如下:

pip install pandas #安装pandaspip install lxml #安装lxmlpip install requests #安装requestspip install pyecharts #安装pyecharts
2. 目标页面分析

首先,我们对“安居客”平台的房价页面html源码进行分析,打开页面https://www.anjuke.com/fangjia/wuhan2022/可以看到2022年武汉市各个月份的房价均价和均价涨跌幅。目标页面链接的构造方式为anjvke.com域名+/fangjia+/城市名年份+/区县名,武汉市洪山区2022年的房价链接为anjuke.com/fangjia/wuhan2022/hongshan。

打开页面后,我们按F12呼出源码页面,寻找上图所对应的html源码块。

经过一步步查找,可以发现我们需要的数据源码块的XPATH路径为/html/body/div[2]/div[5]/div[1]/div[1]/ul,日期为/li[1]/a/b,房价数据为li[1]/a/span。万事俱备,只欠东风,起航!

3. 武汉市各区房价爬取

“安居客”平台网站有反爬虫检测,判断为非法访问后,会禁止这台电脑访问站点,一定要记得添加headers和cookie的信息哦~!使用requests库爬取html信息;xpath进行循环爬取、xml的提取方法等将信息提取到控制台,使用正则表达式进行处理;设置for循环遍历各个区的页面等等。具体代码如下所示:

import re #导入正则表达式模块import requests #导入requests模块from time import sleep #推迟调用线程的运行的模块import pandas as pd #导入pandas模块from lxml import etree
price_area = [] #设置空列表,地区price_date = [] #日期price_average = [] #房价均价price_increase = [] #涨幅price_url = [] #目标链接
def get_house_information(url): # 设置headers和cook信息 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36' } cook = { 'Cookie': 'sessid=DDB560F3-56C3-F162-0567-2E58062E6B19; aQQ_ajkguid=B104C396-F61B-D6BB-4471-7DE7840A1DDE; twe=2; ajk-appVersion=; seo_source_type=0; fzq_h=6e18cc55c92e73925cf7ab5773e3e672_1676796000719_f71e72a313f941ac82ffc00b2d98ff82_3544555865; id58=CAh2Q2Px4GekxQe2VJTGAg==; wmda_uuid=90397a0dfed9b26387d10797848a6955; wmda_new_uuid=1; wmda_visited_projects=%3B6289197098934; 58tj_uuid=ea1b2c42-3171-4a14-948b-6b9266cd77e4; _ga=GA1.2.1182154341.1676796981; _gid=GA1.2.1568059021.1676796981; als=0; ctid=22; obtain_by=2; new_uv=2; xxzl_cid=39510fa8514d45a7b8ec4f993c3e54e1; xxzl_deviceid=pXGHBXrbjCHHIEawybJjuinOVGx4AcrPn3suCP/6Bh+vlR/lv7NV9nxIbm490brj' } html = requests.get(url, cookies=cook, headers=headers) html.encoding = 'utf-8' house = etree.HTML(html.text) for k in range(1,13,1): area = house.xpath("//html/body/div[2]/div[5]/div[1]/div[1]/h3/text()") price_area.append(area)
date = house.xpath(("/html/body/div[2]/div[5]/div[1]/div[1]/ul/li[{}]/a/b/text()").format(k)) price_date.append(date)
average = house.xpath(("//html/body/div[2]/div[5]/div[1]/div[1]/ul/li[{}]/a/span/text()").format(k)) price_average.append(average)
increase = house.xpath(("//html/body/div[2]/div[5]/div[1]/div[1]/ul/li[{}]/a/em/text()").format(k)) price_increase.append(increase)
def save_total_csv(name): #结果输出为CSV表格 df = pd.DataFrame() df['地区'] = price_area df['日期'] = price_date df['房价均价(元/㎡)'] = price_average df['涨幅'] = price_increase df.to_csv(name,encoding='utf_8_sig')
if __name__ == '__main__':
# 设置url h_place = ('zhuankouk','wuchanga','hongshana','jiangan','hanyang','jianghana','qiaokou','dongxihu','jiangxiat','huangpiz','qingshan','caidianz','xinzhouz','hannanz') for j in range(len(h_place)): for i in range(2017,2023,1): page_url = "https://www.anjuke.com/fangjia/wuhan{}/{}".format(i,h_place[j]) print('开始爬取{}第{}年,地址是:{}'.format(h_place[j],i,page_url)) get_house_information(page_url) #main函数调用方法,传入url参数 sleep(3) #休息几秒 #保存文件 save_total_csv(name="tutor_information.csv")pass

打开CSV数据文件,我们即可得到一份完整的地区房价数据。

4. 武汉市房价动态图

首先,我们调用pyecharts,然后设置地图类型为武汉,数据设为2022年12月武汉市各区的相关数据即可(下图为动态图,可以放大缩小,手机轻触会显示数值哦,电脑鼠标瞄上去就会显示数值)。具体程序如下;

  • 房价均价地图
from pyecharts import options as opts # 调用图表配置选项库 from pyecharts.charts import Map # 调用画图库
数据 = [['洪山区', 18240],['硚口区', 16473],['汉南区', 6447],['黄陂区', 9422],['江夏区', 13588],['东西湖区', 11404],['武昌区', 26333],['新州区', 6788],['江岸区', 20174],['沌口区', 10848],['汉阳区', 16479],['江汉区', 20744],['青山区', 15728],['蔡甸区', 9335]] # 设置数据
地图 = (Map().add('', 数据,maptype = "武汉"))地图.render('城市地图房价均价.html')
  • 房价涨幅
from pyecharts import options as opts # 调用图表配置选项库 from pyecharts.charts import Map # 调用画图库
数据 = [['洪山区', -0.0021],['硚口区', -0.0083],['汉南区',-0.0003],['黄陂区', -0.0067],['江夏区', -0.004],['东西湖区', -0.0082],['武昌区', -0.0046],['新州区', -0.0045],['江岸区', -0.0002],['沌口区', 0.0161],['汉阳区', 0.0117],['江汉区', 0.0073],['青山区',0.0003],['蔡甸区',-0.0235]] # 设置数据
地图 = (Map().add('', 数据,maptype = "武汉"))地图.render('城市地图房价涨幅.html')

输出结果为html的形式,大家可以复制代码自行制作html形式文件,下图为静态图片。

2022年以来,武汉房价上涨趋势不明显。特别是2022年12月武汉中心城区房价平稳波动,房价上涨缺少推动力,但仍维持在1.5w-2.1w之间。从2017年来看,武汉市房价上涨大趋势没有改变,你仍然可以相信武汉的发展前景!江夏、东西湖区等后来居上,2022年稳定在1.3w均价处。

以上就是小编介绍的全部内容了,是不是很有意思呢,大家也赶快去爬一爬你感兴趣的城市吧,同时记得绘制所在省市的地图哦!

END

重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!




往期推文推荐 Python 常见内置函数(二)

Stata绘制饼形图的进阶用法

Python标准库--logging模块盲区探索——Stata的读写极限Camelot提取PDF表格:一页多表、多页一表

Stata绘图系列——条形图绘制

Python常见内置函数(一)Stata绘图系列——饼形图绘制【爬虫实战】深交所服务业年报数据

“挂羊头卖狗肉”?

Python与excel交互--xlsxwriter模块

cnmapsearch——离公司最近的快餐店在哪

Python中的异常处理 Python交互式数据可视化——酷炫的Altair库 hk系列命令(3)—— hktrade hk系列命令(2)—— hkar hk系列命令(1)—— hkstock 超好用的字符串方法
     关于我们 

   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存