前言

侠之大者,为国接盘

准备工作

首先你的环境中,应该会有如下的配置

  • urllib
  • BeautifulSoup
  • pandas

如果都没有的话,使用pip3 install xxx安装,不会的话google
最终引入如下的库

1
2
3
4
import urllib.request
import time
from bs4 import BeautifulSoup
import pandas as pd

接盘侠之路

1.设置请求固定页

设置列表页URL的固定部分,这次主要抓取链家二手房数据

1
url='http://bj.lianjia.com/ershoufang/'
2. 抓取数据

开始抓取数据,总共应该会有100页,因此我们使用一个循环,一页一页的进行请求,我们请求使用的是python内置的urllib库,因此最终的代码应该如下,应该不用我解释了吧

1
2
3
4
5
6
7
for i in range(1,2):
a = (url + 'pg' + str(i) + '/')
rsp = urllib.request.urlopen(url=a,data=None,timeout=10)
page = rsp.read()

#每次间隔0.5秒
time.sleep(0.5)

注意:啪啪的时候一定要注意休息一下,再继续,所以time.sleep(0.5)你懂得

3. 分析数据

接下来,就已经有了数据了,我们开始分析数据,之前有介绍过bs4吧,因此此处我们使用这个库来进行爬取数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
lj = BeautifulSoup(page,'html.parser')

# 分析出总价,放到一个列表中
price = lj.find_all('div',attrs={'class':'priceInfo'})
tp = []
for a in price:
totalPrice = a.span.get_text()
tp.append(totalPrice)
print(tp)

# 分析出房屋具体信息
houseInfo = lj.find_all('div', attrs={'class': 'houseInfo'})
hi = []
for b in houseInfo:
house = b.get_text()
hi.append(house)
print(hi)

# 分析出房屋的关注量
followInfo = lj.find_all('div', attrs={'class': 'followInfo'})
fi = []
for c in followInfo:
follow = c.get_text()
fi.append(follow)
print(fi)
4. 清洗数据+整合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 创建数据表
# house = pd.DataFrame({ "houseinfo":hi, "followinfo":fi, "totalprice":tp})
house = pd.DataFrame({"totalprice":tp})
# print(house)
# exit()
# 查看数据表内容
# house.head()

# 对房源信息进行分列
houseinfo_split = pd.DataFrame((x.split('|') for x in hi),columns=['xiaoqu','huxing','mianji','chaoxiang','zhuangxiu','dianti'])
# print(houseinfo_split)
# houseinfo_split.head()

house = pd.merge(house,houseinfo_split,right_index=True, left_index=True)
print(house)
# house.head()

huxing = house.groupby('huxing')['huxing'].agg(len)
print(huxing.head())

以上就是简单的数据分析,但是看了这么多,感觉怎样呢
house.jpg