利用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
更多优质内容持续发布中,请移步主页查看。
点赞+关注,下次不迷路!