网站结构简化为两类,静态和动态网页,动态网页大多使用javascript运作,例如airbnb,这类网站可以根据用户行为做出相应的类容调整,因此需要异步爬取。尝试就从静态网页开始。
数据分析的步骤是:数据获取——数据清洗——数据呈现
主要用到的软件:python,Excel
python作为一种编程语言,因为其简单推行速度很快,也产生了越来越丰富的第三方库来支持,即便代码在运行速度上与C语言有差距,但在各种丰富的库加持下,可谓战力大增,即便实现人工智能大概30行代码就完事了。
主要用到是下面这些库:
frombs4importBeautifulSoup #网站结构分析及数据提取
importrequests #网站响应
importre #正则
importxlwt #表格工具
代码的结构很简单:1.网页结构分析及数据获取;2.提取需要的数据;3.导出数据及配合类型
首先,利用浏览器去查看网页的结构及需要爬取的部位情况,包括网页地址规律、爬取数据结构位置等等。之后就利用requests和beautifulsoup来分析网页结构和提取对应的数据
forpageinrange(100):
print(page)
all_url = ('https://sz.****.com/ditiezufang/pg%s'% page)
start_html = requests.get(all_url,headers=headers)
soup = BeautifulSoup(start_html.text,'lxml')
第二步,回到网站网页中细致分析网站前端架构。每一个“li data-index"对应的是每一个户型,在这个标签下面附属了许多带有属性的tags,以下蓝色部分"......"包含的是房间的规模,可见当前户型是一室一厅的布局。以此类推寻找网页中代表性的tags
第三步,利用beautifulsoup根据上述tags的特征,提取相应的数据并利用list将其储存起来以使用,过程中,因为数据是脏数据,利用.join,将不必要的数据剥离,最后逐一添加到list中
floor = soup.find_all('span',attrs={'class':'zone'})
pl3 = []
foreach3infloor:
buju = each3.get_text()
buju1 ="".join(buju.split())
pl3.append((buju1))
第四步,爬取到相应的数据后就是储存数据
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('p1')
table_head = ['楼盘','面积(㎡)','布局','租金(元)','地址']
head =len(table_head)
foriinrange(head):
worksheet.write(,i,table_head[i])
根据table_head的个数建立表格
headlen =len(pl5)
foriinrange(headlen):
worksheet.write(page*30+i+1,4,pl5[i])
workbook.save('C:\musde\lianjia\sh%s.xls'% page)
提取每个list的长度,在对应的表格填写对应的数据,最后输出excel
第五步,上面的数据还不能直接使用,还需要利用baidumap的geo API来分析楼盘的经纬度,但这部分需要用到json的,使用了一些网站手动完成经纬度转换。实际上也可以直接使用datamap来完成。
第六步,直接利用Excel的三维地图实现数据呈现,专业的话可以使用echarts呈现,选择更多
以上数据仅为局部3000条数据的结果,不能完全体现真实的现状……
经过分析可见到,深圳租金分布情况,当然数据还有其他发掘可能性,暂时保留,下面可以看看,纯粹以单方租金来看最小值和最大值
相比同类数据在上海和广州的,发现上海的租金更贵,广州跟深圳比较接近,可以不分上下吧
领取专属 10元无门槛券
私享最新 技术干货