爬取广州链家租房信息,并用tableau进行数据分析
来源:互联网 发布:淘宝信用卡在哪申请 编辑:程序博客网 时间:2024/04/20 15:52
在外工作,难免需要租房子,而链家是现在比较火的一个租房网站,本文章主要是爬取链家在广州的租房信息,并且进行简单的数据分析。
数据采集
如图所示,我们需要的信息主要是存放在这个标签里面,我们把信息采集下来,并且放到mysql的数据库中。
相关代码:
# -*- coding:utf-8 -*-import requestsfrom bs4 import BeautifulSoupimport pandas as pdfrom sqlalchemy import create_engineimport reheaders = { 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive'}xingzhengqu = ['tianhe', 'yuexiu', 'liwan', 'haizhu', 'panyu', 'baiyun', 'huangpugz', 'zengcheng', 'huadou', 'nansha']xingzhengqu_cn = ['天河', '越秀', '荔湾', '海珠', '番禺', '白云', '黄埔', '增城', '花都', '南沙']def get_url(url, page): html = requests.get(url + '/pg%s' % str(page), headers=headers).text table = BeautifulSoup(html, 'lxml').find('div', {'class': 'con-box'}).find_all('li', {'data-el': 'zufang'}) table_2 = BeautifulSoup(html, 'lxml') pattern = re.compile('"totalPage":(.*?),".*?') last_page = re.findall(pattern, str(table_2)) pattern_mianji = re.compile("(.*?)平米.*?") pattern_updatetime = re.compile("(.*?)\s更新") pattern_quyu = re.compile("(.*?)租房") result = [] for li in table: item = dict() item[u'网站'] = li.find('a').get('href') item[u'房屋描述'] = li.find('img').get('alt') item[u'小区'] = li.find('div', {'class': 'where'}).find('a').get_text().replace('\xa0', '') item[u'房型'] = li.find('div', {'class': 'where'}).find_all('span')[1].get_text().replace('\xa0', '') item[u'面积'] = re.findall(pattern_mianji, li.find('div', {'class': 'where'}).find_all('span')[3].get_text())[0] item[u'朝向'] = li.find('div', {'class': 'where'}).find_all('span')[4].get_text() item[u'地区'] = re.findall(pattern_quyu, li.find('div', {'class': 'other'}).find('a').get_text())[0] item[u'楼层'] = li.find('div', {'class': 'con'}).get_text().split('/')[1] item[u'年限'] = li.find('div', {'class': 'con'}).get_text().split('/')[2] item[u'价格'] = li.find('div', {'class': 'price'}).find('span', {'class': 'num'}).get_text() item[u'更新时间'] = re.findall(pattern_updatetime, li.find('div', {'class': 'price-pre'}).get_text())[0] item[u'看房人数'] = li.find('div', {'class': 'square'}).find('span', {'class': 'num'}).get_text() result.append(item) return result, last_pagedef get_quyu_data(area, x): url = "https://gz.lianjia.com/zufang/%s" % area page = 1 last_page = get_url(url, page)[1] df = pd.DataFrame() while True: try: result = get_url(url, page)[0] except: print("failed") break df = df.append(pd.DataFrame(result)) page += 1 if page > int(''.join(last_page)): break df['区域'] = '%s' % x return dfdef main(): column = ['房屋描述', '区域', '地区', '小区', '房型', '面积', '楼层', '朝向', '价格', '年限', '更新时间', '看房人数', '网站'] engine = create_engine('mysql+mysqldb://root:123456@127.0.0.1/data?charset=utf8') frame = pd.DataFrame() for i in range(len(xingzhengqu)): quyu = get_quyu_data(xingzhengqu[i], xingzhengqu_cn[i]) frame = frame.append(quyu) frame = frame.reindex(columns=column) frame.index = range(len(frame)) frame.to_sql('lianjia_zufang', engine, if_exists='replace')if __name__ == '__main__': main()
一共搜集了1W2+条数据,接着便是开始数据分析了。
数据分析
这次的数据分析主要是用到tableau这个软件。
房屋数量分布
线看看各区有多少房子在出租
可以看出出租房子最多的是天河区,一共有2489套,白云、番禺和海珠也各有2000套以上,而花都、增城则数量比较少了。
房租
房租自然是我们最关心的点了
1.先看看平均房租
因为链家出租的大多数都是小区房,所以平均房租要比城中村的房租要高出好多。
2.再看看各区的平均房价
不出所料,房价最高的是天河区,其次是海珠区、荔湾区,而价格最低的则是南沙区。
影响房价的因数:
1.朝向:
一般来说朝向是影响房价的一个因数,我们来看看不同朝向,房价会有怎么样的变化。
我们可以看到南 北朝向的房子平均楼价最高。
2.面积:
整体来看,面积越大,房价越高。
3.楼龄:
我们可以看到,平均房价最高的是2016年建的板楼,接着是2010年建的房子。而价格较低的则是1984年、1965年建的房子。
阅读全文
0 0
- 爬取广州链家租房信息,并用tableau进行数据分析
- 大数据:广州租房信息统计,这些地方最便宜
- Python2 Python3 爬取赶集网租房信息,带源码分析
- R语言抓取广州租房信息
- Python实战1_3:爬取租房信息
- 课时12 第三节练习项目:爬取租房信息
- 四周实现爬虫系统(2)---爬取租房信息
- Python 爬虫学习2爬取租房网站信息
- Python爬虫--爬取赶集网的租房信息
- 使用BeautifulSoup爬取小猪短租的租房信息
- python爬取学校体育部的跑超数据并用Tkinter写出应用并进行封装生成exe文件
- python爬取CSDN博客并用WordCloud词云分析
- 可视化数据分析软件Tableau-简单说
- 养只爬虫当宠物(Node.js爬虫爬取58同城租房信息)
- 【R语言 爬虫】用R爬虫,爬取杭州安居客九堡租房信息
- 基于BeautifulSoup的58同城的南山区租房信息爬取
- scrapy爬虫案例爬取赶集网租房信息并入库
- Python爬虫入门 | 5 爬取小猪短租租房信息
- J2EE开发的颠覆者SpringBoot快速入门!
- oracle数据库(范式)
- Win32实现DES加密算法
- 第九周项目2-二叉树递归遍历
- Java数据结构与算法解析(八)——伸展树
- 爬取广州链家租房信息,并用tableau进行数据分析
- meanshift算法学习(一):opencv中的calcBackProject
- hive 优化 控制 map 和 reduce的数量
- Callback 与 Promise 间的桥梁 —— promisify
- HDU6143 Killer Names(数论)
- DNS协议概述
- 字符串对象方法(API)
- Java数据结构与算法解析(九)——B树
- MySQL binlog 组提交与 XA(分布式事务、两阶段提交)【转】