利用Python爬取房价信息(附代码)

       大家好,我是带我去滑雪,每天教你一个小技巧!住房问题从古到今一直备受人们关注。从老子谈到的“安居乐业”,再到诗人杜甫所描绘的“安得广厦千万间,大庇天下寒士俱欢颜”, 不难可以发现古往今来,对于住房问题始终倾注着人们对美好生活的希冀和梦想。时至今日,无论是学有所教、劳有所得,还是病有所医、老有所养,仍然离不开住有所居的实现。基于上述背景,本文运用python对某网站的广州房价进行了爬虫,收集了与房价有关的14项指标数据,例如房屋面积、房屋朝向、有无电梯、房屋所在楼层位置等,爬取结果具体见表1、表2。

表1  python爬虫文本获取结果展示(一)

编号

标题

小区名称

房屋位置

房屋户型

房屋面积

gif.latex?m%5E%7B2%7D

房屋朝向

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 
 


更多优质内容持续发布中,请移步主页查看。

若有问题可邮箱联系:1736732074@qq.com 

博主的WeChat:TCB1736732074

   点赞+关注,下次不迷路!

爬取一个人的微博,需要使用微博的开放API,并且需要申请开发者账号和应用程序来获取API的访问权限。下面是通过Python代码爬取一个人微博的基本步骤: 1. 安装 requests 和 json 库: ``` pip install requests ``` 2. 获取微博开放API的访问令牌 首先需要注册成为微博开发者账号,然后创建应用程序,获取应用程序的 `client_id` 和 `client_secret`,用于后续获取访问令牌。 ```python import requests def get_access_token(client_id, client_secret): url = 'https://api.weibo.com/oauth2/access_token' params = { 'grant_type': 'client_credentials', 'client_id': client_id, 'client_secret': client_secret, } response = requests.post(url, params=params) return response.json()['access_token'] ``` 3. 获取用户的微博列表 使用获取微博列表的API:`https://api.weibo.com/2/statuses/user_timeline.json`,其中需要传入 `access_token` 和 `uid` 参数,`uid` 是需要爬取微博的用户的ID。 ```python def get_user_statuses(access_token, uid, count=100): url = 'https://api.weibo.com/2/statuses/user_timeline.json' params = { 'access_token': access_token, 'uid': uid, 'count': count, } response = requests.get(url, params=params) return response.json()['statuses'] ``` 4. 解析微博内容 微博的内容包含在微博返回的 JSON 数据中,可以根据需要选择解析其中的字段。例如,可以解析微博的文本内容,发布时间,点赞数等信息。下面是一个简单的例子: ```python def parse_statuses(statuses): for status in statuses: text = status['text'] # 微博文本内容 created_at = status['created_at'] # 发布时间 attitudes_count = status['attitudes_count'] # 点赞数 print(text, created_at, attitudes_count) ``` 完整代码示例: ```python import requests def get_access_token(client_id, client_secret): url = 'https://api.weibo.com/oauth2/access_token' params = { 'grant_type': 'client_credentials', 'client_id': client_id, 'client_secret': client_secret, } response = requests.post(url, params=params) return response.json()['access_token'] def get_user_statuses(access_token, uid, count=100): url = 'https://api.weibo.com/2/statuses/user_timeline.json' params = { 'access_token': access_token, 'uid': uid, 'count': count, } response = requests.get(url, params=params) return response.json()['statuses'] def parse_statuses(statuses): for status in statuses: text = status['text'] # 微博文本内容 created_at = status['created_at'] # 发布时间 attitudes_count = status['attitudes_count'] # 点赞数 print(text, created_at, attitudes_count) if __name__ == '__main__': client_id = 'your_client_id' client_secret = 'your_client_secret' access_token = get_access_token(client_id, client_secret) uid = 'your_uid' statuses = get_user_statuses(access_token, uid) parse_statuses(statuses) ``` 需要注意的是,微博对于API的访问频率有限制,如果频繁访问可能会被封禁,因此建议适当控制访问频率。另外,微博的API文档中有详细的参数说明和返回字段说明,可以根据需要进行调整。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带我去滑雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值