前言

嗨喽,大家好呀!这里是魔王呐~

环境使用:

  • Python 3.8
  • Pycharm

模块使用:

  • requests >>> pip install requests 数据请求模块
  • parsel >>> pip install parsel 数据解析模块
  • csv 内置模块

如果安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
  2. 点击齿轮, 选择add
  3. 添加python安装路径

pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)
  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
  3. 选择相应的插件点击 install(安装) 即可
  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效

思路分析

这有自己的一套模板 <通用>

一. 数据来源分析

  1. 确定自己采集数据是什么, 并且这些数据可以从那里获取到

链家网站数据, 静态网页… <你所看到的数据, 都来于网页源代码>

二. 代码实现步骤过程

  1. 发送请求, 对于url地址发送请求
  2. 获取数据, 获取网页源代码数据
  3. 解析数据, 提取我们想要的数据内容
  4. 保存数据, 把数据保存到表格里面

代码

一、采集数据

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采集数据并做数据可视化~相关推荐

  1. 劝你们,千千千万不要当一个程序员!!!!!!

    劝你们,千千千万不要当一个程序员!!!!!! 你们可知道- 听到这些还愿意干? 那咱继续往下看 想当程序员"必须"这样穿 ↓ 夏天二次元文化衫(T恤)+拖鞋 冬天优衣库黑色羽绒服 ...

  2. 陪玩MM千千万,谁是你的NO.1?使用Python获取陪玩照片进行颜值检测打分

    陪玩MM千千万,谁是你的NO.1?使用Python获取陪玩照片进行颜值检测打分 序言 工欲善其事,必先利其器 1.数据来源分析 2.实现步骤 3.环境与模块 代码展示 序言 哈喽好兄弟们~ 咱们这几年 ...

  3. 直播平台千千万,一对一/一对多直播源码快速搭建的终极秘密

    直播平台千千万,一对一/一对多直播源码快速搭建的终极秘密 初创公司如果打算自建视频直播平台,其实技术研发成本比较高,由于目前直播技术相对都比较成熟,设备也都支持硬编码,建议可以自主购买一整套的程序源码 ...

  4. 融不进去的圈子不必强融,不必委屈自己,去讨好别人,你永远活不成所有人满意的样子!这世间苦难千千万,千万别因为害怕受伤而不去善良……做真实的自己。

    融不进去的圈子不必强融,不必委屈自己,去讨好别人,你永远活不成所有人满意的样子!这世间苦难千千万,千万别因为害怕受伤而不去善良--做真实的自己.

  5. 大数据工具千千万,到底谁才是最强王者?

    外面有成千上万的大数据工具.它们都承诺可以为你节省时间和资金,并帮助发掘之前从来见过的业务洞察力.虽然确实如此,可是面对那么多的选择,想理清这么多的工具谈何容易. 哪一种工具适合你的技能组合?哪一种工 ...

  6. 千万级日订单下,饿了么异地多活数据实施DRC的应用实践

    http://www.sohu.com/a/161206810_463994 今天,我主要分享饿了么多活的底层数据实施,和大家介绍在整个多活的设计和实施过程中,我们是怎么处理异地数据同步的,而这个数据 ...

  7. 从月薪5千到月薪3万,优秀的程序员是这样做的...

     从2018下半年开始至今,互联网迎来了自己的寒潮,各大公司都在裁员.广为人知的有:京东.知乎.锤子.美团.摩拜.滴滴都在疯狂裁员."裁员"一词瞬间成为各大网站热点讨论话题.  作 ...

  8. 近找到了一个免费的python教程,两周学会了python开发【内附学习视频】

    原文作者:佛山小程序员 原文链接:https://blog.csdn.net/weixin_44192923/article/details/86515984 最近找到了一个免费的python教程,两 ...

  9. 最近找到了一个免费的python教程,两周学会了python开发

    最近找到了一个免费的python教程,两周学会了python开发 最近找到了一个免费的python教程,两周学会了python开发.推荐给大家,希望召集更多的朋友一起学习python. 最近开始整理p ...

最新文章

  1. linux share目录 多个机器访问,如何在linux下网上邻居访问另一台机windows共享的目录?(急)...
  2. 要做服务和酒店行业的“领英” ,Industry 获得230万美元种子轮融资
  3. 【数据分析】Python :知乎数据清洗整理和结论研究
  4. python中如何调用类_python如何调用java类
  5. spring-boot注解详解(二)
  6. python中if控制语句_了解Python控制流语句——if语句
  7. sql删除快还是update快_下班回家,是骑自行车减肥快还是走路减肥快?
  8. 互联网行业个人精进指南
  9. Android轩辕剑之ActionBar之二
  10. 关于工作[update]
  11. Windows下U盘无法格式化原因及解决办法:Windows无法完成格式化
  12. TestStand版本切换注意事项(重启电脑)
  13. 如何破解瞻博网络认证的互联网专家 - JUNOS安全考试(JNCIS)
  14. 软件工程第三次作业——用户体验分析:以“南通大学教务学生管理系统”为例...
  15. 管理系统常用的jsp页面主模板
  16. 手机屏幕取词翻译软件哪个比较好?快看这篇文章,它能告诉你
  17. 华为p10关闭更新_华为P10正常升级和强制降级详细方法
  18. 倾角传感器精度校准检测
  19. 一星期总结:U盘量产与USB-CDROM制作及修改晨枫U盘维护V2.0完全攻略
  20. microsoft微软登录新账户/切换账户失败,一直转圈,提示“你似乎没有连接到internet”

热门文章

  1. 今日份安利:图片无损放大安卓版
  2. Xamarin. Android实现下拉刷新功能
  3. Spring事务你可能不知道的事儿
  4. 逻辑思维类面试题汇编六
  5. 一人之下鸿蒙炁灵搭配,一人之下手游炁灵怎么搭配
  6. ChatGPT的接口在哪
  7. 【小程序源码】特效语音支持多种音效
  8. 软件设计师中级- 系统安全分析与设计
  9. 为什么你的年终绩效总是完不成?
  10. “沉浸式”体验?异形屏适配?我把他们扒光了明明白白告诉你应该这样做