利用Python爬取房价信息(附代码)
Posted 带我去滑雪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Python爬取房价信息(附代码)相关的知识,希望对你有一定的参考价值。
大家好,我是带我去滑雪,每天教你一个小技巧!住房问题从古到今一直备受人们关注。从老子谈到的“安居乐业”,再到诗人杜甫所描绘的“安得广厦千万间,大庇天下寒士俱欢颜”, 不难可以发现古往今来,对于住房问题始终倾注着人们对美好生活的希冀和梦想。时至今日,无论是学有所教、劳有所得,还是病有所医、老有所养,仍然离不开住有所居的实现。基于上述背景,本文运用python对某网站的广州房价进行了爬虫,收集了与房价有关的14项指标数据,例如房屋面积、房屋朝向、有无电梯、房屋所在楼层位置等,爬取结果具体见表1、表2。
表1 python爬虫文本获取结果展示(一)
编号 | 标题 | 小区名称 | 房屋位置 | 房屋户型 | 房屋面积 () | 房屋朝向 |
1 | 鸿城花园 精致两房 南向高楼层 | 鸿城花园 | 市桥 | 2室2厅 | 78.6 | 西南 |
2 | 岭南新世界 带空中花园实用小四居 望花园 | 岭南新世界 | 白云大道北 | 4室2厅 | 98 | 西南 |
3 | 隆康花园 2室1厅 255万 | 隆康花园 | 白云大道南 | 2室1厅 | 58.1 | 西南 |
4 | 南北对流 楼层好 视野宽阔 采光充足 | 荷景花园一区 | 沙湾 | 4室2厅 | 118 | 东南 |
5 | 南向三房出售 户型方正 采光好 | 番禺人民医院宿舍 | 市桥 | 3室1厅 | 97.7 | 南 |
⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
2979 | 华荟南景园 电梯高层 自住装修保养新净 | 华荟南景园 | 沙湾 | 2室2厅 | 76.8 | 北 |
2980 | 南区132方大三房 南北对流户型 中层景观采光都是一留 | 华南新城 | 星河湾 | 3室2厅 | 132.51 | 南 北 |
2981 | 富景花园 中层温馨两房 舒适实用 | 富景花园 | 新港西 | 2室1厅 | 80.3 | 东南 南 |
2982 | 悦涛雅苑 2室2厅 268万 | 悦涛雅苑 | 区府 | 2室2厅 | 64.81 | 北 |
2983 | 乐意居花园 2室1厅 235万 | 乐意居花园 | 长兴 | 2室1厅 | 57.26 | 东 |
2984 | 天鹅花苑电梯大两房 户型房子 双阳台 全南户型 | 天鹅花苑 | 长兴 | 2室1厅 | 75.38 | 南 |
表2 python爬虫文本获取结果展示(二)
编号 | 房屋装修情况 | 有无电梯 | 楼层位置 | 附近有无地铁 | 关注度(人数) | 看房次数 | 每平方米价格(元) | 房屋总价(万元) |
1 | 其他 | 有电梯 | 高楼层 | 有地铁 | 58 | 14 | 26718 | 210 |
2 | 其他 | 有电梯 | 低楼层 | 有地铁 | 2337 | 18 | 44184 | 433 |
3 | 简装 | 有电梯 | 中楼层 | 有地铁 | 25 | 18 | 43890 | 255 |
4 | 精装 | 无电梯 | 中楼层 | 无地铁 | 2106 | 6 | 16526 | 195 |
5 | 简装 | 无电梯 | 高楼层 | 无地铁 | 1533 | 7 | 15354 | 150 |
6 | 简装 | 有电梯 | 中楼层 | 有地铁 | 47 | 5 | 49164 | 570 |
7 | 简装 | 有电梯 | 低楼层 | 有地铁 | 80 | 19 | 61332 | 630 |
8 | 简装 | 有电梯 | 低楼层 | 有地铁 | 873 | 21 | 42292 | 310 |
9 | 简装 | 有电梯 | 中楼层 | 无地铁 | 64 | 14 | 22066 | 203 |
10 | 其他 | 有电梯 | 高楼层 | 无地铁 | 28 | 12 | 33118 | 205 |
11 | 精装 | 有电梯 | 低楼层 | 无地铁 | 40 | 8 | 68062 | 540 |
12 | 精装 | 有电梯 | 高楼层 | 有地铁 | 1522 | 6 | 45842 | 608 |
13 | 简装 | 无电梯 | 中楼层 | 无地铁 | 81 | 13 | 23602 | 135 |
14 | 精装 | 有电梯 | 中楼层 | 有地铁 | 134 | 10 | 37464 | 338 |
15 | 简装 | 有电梯 | 高楼层 | 无地铁 | 1230 | 12 | 50674 | 440 |
16 | 精装 | 无电梯 | 中楼层 | 无地铁 | 691 | 13 | 21634 | 200 |
17 | 精装 | 有电梯 | 中楼层 | 有地铁 | 51 | 2 | 72409 | 2680 |
18 | 简装 | 无电梯 | 中楼层 | 有地铁 | 64 | 12 | 27668 | 210 |
19 | 精装 | 有电梯 | 低楼层 | 无地铁 | 231 | 14 | 26718 | 210 |
⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
2979 | 简装 | 有电梯 | 高楼层 | 无地铁 | 4 | 0 | 26432 | 300 |
2980 | 其他 | 有电梯 | 中楼层 | 无地铁 | 28 | 0 | 30339 | 233 |
2981 | 简装 | 有电梯 | 中楼层 | 有地铁 | 8 | 5 | 28300 | 375 |
2982 | 简装 | 有电梯 | 中楼层 | 有地铁 | 2 | 0 | 46700 | 375 |
2983 | 其他 | 无电梯 | 低楼层 | 有地铁 | 0 | 0 | 41352 | 268 |
2984 | 简装 | 有电梯 | 高楼层 | 无地铁 | 0 | 0 | 41041 | 235 |
Python代码如下:
import requests
from bs4 import BeautifulSoup
import pymysql
#获取房源页码链接
def get_urlpage(baseurl):
Urls = []
Urls.append(' 网址')
for i in range(1,100):
Urls.append('网址 pg'.format(i+1))
return Urls
#获取房源的数据信息
def get_houseInfos(url):
r = requests.get(url)
bsobj = BeautifulSoup(r.text, 'lxml')
infos = bsobj.find_all('div', 'class': 'info clear')
houseData = 'title':[],'title_link':[],'houseInfo':[],'positionInfo':[],
'followInfo':[],'tagInfo':[],'totalPrice':[],'unitPrice':[]
for info in infos:
houseData['title'].append(info.find('div', 'class': 'title').text)
houseData['title_link'].append(info.find('div', 'class': 'title').find('a')['href'])
houseData['houseInfo'].append(info.find('div', 'class': 'address').text)
houseData['positionInfo'].append(info.find('div', 'class': 'positionInfo').text)
houseData['followInfo'].append(info.find('div', 'class': 'followInfo').text)
houseData['tagInfo'].append(info.find('div', 'class': 'tag').text)
houseData['totalPrice'].append(info.find('div', 'class': 'totalPrice').text)
houseData['unitPrice'].append(info.find('div', 'class': 'unitPrice').text)
return houseData
if __name__ == '__main__':
baseurl = ' 网址'
urls = get_urlpage(baseurl)
#存储到数据库MySQL
conn = pymysql.connect(host='127.0.0.1',user='root',passwd='123456',db='scraping',charset='utf8')
cur = conn.cursor()
try:
for url in urls:
houseData = get_houseInfos(url)
for i in range(0,len(houseData['title'])):
cur.execute("insert into lianjia \\ (title,title_link,houseInfo,positionInfo,followInfo,tagInfo,totalPrice,unitPrice) \\
values \\
('%s','%s','%s','%s','%s','%s','%s','%s')" % \\
(houseData['title'][i], houseData['title_link'][i],houseData['houseInfo'][i],
houseData['positionInfo'][i],houseData['followInfo'][i],
houseData['tagInfo'][i],houseData['totalPrice'][i],houseData['unitPrice'][i])
)
conn.commit()
finally:
cur.close()
conn.close()
需要数据集的家人们可以去百度网盘(永久有效)获取:
链接:https://pan.baidu.com/s/16GeXC9_f6KI4lS2wQ-Z1VQ?pwd=2138
提取码:2138
更多优质内容持续发布中,请移步主页查看。
点赞+关注,下次不迷路!
以上是关于利用Python爬取房价信息(附代码)的主要内容,如果未能解决你的问题,请参考以下文章
Python爬虫实战,openpyxl模块学习,爬取房价信息并简单的数据分析
如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)
如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)