房屋千千万,如何找到便宜实惠的呢,python采集数据并做数据可视化~
前言
嗨喽,大家好呀!这里是魔王呐~
环境使用:
- Python 3.8
- Pycharm
模块使用:
- requests >>> pip install requests 数据请求模块
- parsel >>> pip install parsel 数据解析模块
- csv 内置模块
如果安装python第三方模块:
- win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
- 在pycharm中点击Terminal(终端) 输入安装命令
如何配置pycharm里面的python解释器?
- 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
- 点击齿轮, 选择add
- 添加python安装路径
pycharm如何安装插件?
- 选择file(文件) >>> setting(设置) >>> Plugins(插件)
- 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
- 选择相应的插件点击 install(安装) 即可
- 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效
思路分析
这有自己的一套模板 <通用>
一. 数据来源分析
- 确定自己采集数据是什么, 并且这些数据可以从那里获取到
链家网站数据, 静态网页… <你所看到的数据, 都来于网页源代码>
二. 代码实现步骤过程
- 发送请求, 对于url地址发送请求
- 获取数据, 获取网页源代码数据
- 解析数据, 提取我们想要的数据内容
- 保存数据, 把数据保存到表格里面
代码
一、采集数据
1.1 导入模块
# 导入数据请求模块
import requests
# 导入数据解析模块
import parsel
import re
import csv
f = open('二手房多页.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标题','卖点','总价','单价','户型','楼层','共有楼层数','装修','朝向','建造时间','面积','小区','区域','所属区','梯户比例','是否有电梯','房屋属性','详情页',
])
csv_writer.writeheader()
1.2 发送请求
- 确定请求网址是什么
- 请求方式
- 伪装模拟浏览器
headers >>> 请求头加什么数据, 怎么找呢?
User-Agent: 用户代理 表示浏览器基本身份标识… <相当于你进超市, 要看健康码或者戴口罩>
如果你不加headers对于某些网站, 你可能被识别出来是你爬虫程序, 被反爬 >>> 得不到数据headers 字典数据类型
for page in range(1, 11):url = f'https://cs.lianjia.com/ershoufang/pg{page}/'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}response = requests.get(url=url, headers=headers)# print(response.text)selector = parsel.Selector(response.text)# 真正的掌握css选择器解析方法 在系统课程都是需要学习2.5个小时左右href = selector.css('.sellListContent li.clear .title a::attr(href)').getall()for link in href:# url = 'https://cs.lianjia.com/ershoufang/104108664407.html'# 发送请求response = requests.get(url=link, headers=headers)# print(response) # <Response [200]> 响应对象 200 状态码表示请求成功# 获取数据# print(response.text)
1.3 解析数据
css选择器 >>> 根据标签属性内容提取数据
selector_1 = parsel.Selector(response.text) # 需要把获取html字符串数据转成selector对象# print(selector)# 复制下来仅仅只是定位到标签, 我获取标签里面title属性try:# body > div.sellDetailHeader > div > div > div.title > h1title = selector_1.css('.main::text').get() # 标题selling_point = selector_1.css('.sub::text').get() # 卖点price = selector_1.css('.price .total::text').get() # 总价unitPrice = selector_1.css('.unitPrice .unitPriceValue::text').get() # 单价house_type = selector_1.css('.room .mainInfo::text').get() # 户型subInfo = selector_1.css('.room .subInfo::text').get().split('/') # 楼层floor = subInfo[0] # 楼层num = re.findall('\d+', subInfo[1])[0] # 共有楼层数furnish = selector_1.css('.type .subInfo::text').get().split('/')[-1] # 装修face = selector_1.css('.type .mainInfo::text').get() # 朝向date = re.findall('\d+', selector_1.css('.area .subInfo::text').get()) # 建造时间if len(date) == 0:date = '0'else:date = date[0]area = selector_1.css('.area .mainInfo::text').get().replace('平米', '') # 面积community = selector_1.css('.communityName .info::text').get() # 小区areaName_info = selector_1.css('.areaName .info a::text').getall() # 区域areaName = areaName_info[0] # 所属区region = areaName_info[1] # 区域scale = selector_1.css('div.content ul li:nth-child(10)::text').get() # 梯户比例elevator = selector_1.css('div.content ul li:nth-child(11)::text').get() # 是否有电梯houseProperty = selector_1.css('div.content li:nth-child(2) span:nth-child(2)::text').get() # 房屋属性dit = {'标题': title,'卖点': selling_point,'总价': price,'单价': unitPrice,'户型': house_type,'楼层': floor,'共有楼层数': num,'装修': furnish,'朝向': face,'建造时间': date,'面积': area,'小区': community,'区域': region,'所属区': areaName,'梯户比例': scale,'是否有电梯': elevator,'房屋属性': houseProperty,'详情页': link,}csv_writer.writerow(dit)print(title, selling_point, price, unitPrice, house_type, subInfo, furnish, face,date, area, community, region, scale, elevator, houseProperty, link)except:pass
二、可视化代码
在pycharm里面打开的,效果图大家随便看看就可以啦啊,没有在ipynb里面打开的好看~
2.1 折线图
# 绘制各区二手房总价折线图,是否有电梯作为评定标准
plt.figure(figsize=(12,6))
# Add title
plt.title("各区二手房总价排名")
sns.lineplot(x="所属区", y="总价", data=data,hue=data['是否有电梯'])
# 一般有电梯的房子价格会高于无电梯的房子,但是下图中青羊区、金牛区是例外。
# 此图也可解释后面的热力图中显示“共有楼层数”与“单价”有一定的关系,因为有电梯就表示共有楼层数较高。
2.1.1 效果图
更多可视化代码可点击右侧流动文字或下方扫
房屋千千万,如何找到便宜实惠的呢,python采集数据并做数据可视化~相关推荐
- 劝你们,千千千万不要当一个程序员!!!!!!
劝你们,千千千万不要当一个程序员!!!!!! 你们可知道- 听到这些还愿意干? 那咱继续往下看 想当程序员"必须"这样穿 ↓ 夏天二次元文化衫(T恤)+拖鞋 冬天优衣库黑色羽绒服 ...
- 陪玩MM千千万,谁是你的NO.1?使用Python获取陪玩照片进行颜值检测打分
陪玩MM千千万,谁是你的NO.1?使用Python获取陪玩照片进行颜值检测打分 序言 工欲善其事,必先利其器 1.数据来源分析 2.实现步骤 3.环境与模块 代码展示 序言 哈喽好兄弟们~ 咱们这几年 ...
- 直播平台千千万,一对一/一对多直播源码快速搭建的终极秘密
直播平台千千万,一对一/一对多直播源码快速搭建的终极秘密 初创公司如果打算自建视频直播平台,其实技术研发成本比较高,由于目前直播技术相对都比较成熟,设备也都支持硬编码,建议可以自主购买一整套的程序源码 ...
- 融不进去的圈子不必强融,不必委屈自己,去讨好别人,你永远活不成所有人满意的样子!这世间苦难千千万,千万别因为害怕受伤而不去善良……做真实的自己。
融不进去的圈子不必强融,不必委屈自己,去讨好别人,你永远活不成所有人满意的样子!这世间苦难千千万,千万别因为害怕受伤而不去善良--做真实的自己.
- 大数据工具千千万,到底谁才是最强王者?
外面有成千上万的大数据工具.它们都承诺可以为你节省时间和资金,并帮助发掘之前从来见过的业务洞察力.虽然确实如此,可是面对那么多的选择,想理清这么多的工具谈何容易. 哪一种工具适合你的技能组合?哪一种工 ...
- 千万级日订单下,饿了么异地多活数据实施DRC的应用实践
http://www.sohu.com/a/161206810_463994 今天,我主要分享饿了么多活的底层数据实施,和大家介绍在整个多活的设计和实施过程中,我们是怎么处理异地数据同步的,而这个数据 ...
- 从月薪5千到月薪3万,优秀的程序员是这样做的...
从2018下半年开始至今,互联网迎来了自己的寒潮,各大公司都在裁员.广为人知的有:京东.知乎.锤子.美团.摩拜.滴滴都在疯狂裁员."裁员"一词瞬间成为各大网站热点讨论话题. 作 ...
- 近找到了一个免费的python教程,两周学会了python开发【内附学习视频】
原文作者:佛山小程序员 原文链接:https://blog.csdn.net/weixin_44192923/article/details/86515984 最近找到了一个免费的python教程,两 ...
- 最近找到了一个免费的python教程,两周学会了python开发
最近找到了一个免费的python教程,两周学会了python开发 最近找到了一个免费的python教程,两周学会了python开发.推荐给大家,希望召集更多的朋友一起学习python. 最近开始整理p ...
最新文章
- linux share目录 多个机器访问,如何在linux下网上邻居访问另一台机windows共享的目录?(急)...
- 要做服务和酒店行业的“领英” ,Industry 获得230万美元种子轮融资
- 【数据分析】Python :知乎数据清洗整理和结论研究
- python中如何调用类_python如何调用java类
- spring-boot注解详解(二)
- python中if控制语句_了解Python控制流语句——if语句
- sql删除快还是update快_下班回家,是骑自行车减肥快还是走路减肥快?
- 互联网行业个人精进指南
- Android轩辕剑之ActionBar之二
- 关于工作[update]
- Windows下U盘无法格式化原因及解决办法:Windows无法完成格式化
- TestStand版本切换注意事项(重启电脑)
- 如何破解瞻博网络认证的互联网专家 - JUNOS安全考试(JNCIS)
- 软件工程第三次作业——用户体验分析:以“南通大学教务学生管理系统”为例...
- 管理系统常用的jsp页面主模板
- 手机屏幕取词翻译软件哪个比较好?快看这篇文章,它能告诉你
- 华为p10关闭更新_华为P10正常升级和强制降级详细方法
- 倾角传感器精度校准检测
- 一星期总结:U盘量产与USB-CDROM制作及修改晨枫U盘维护V2.0完全攻略
- microsoft微软登录新账户/切换账户失败,一直转圈,提示“你似乎没有连接到internet”
热门文章