目录标题

  • 前言
  • 环境使用:
  • 模块使用:
  • python技术实现: <基本流程步骤>
  • 代码展示
  • 尾语

前言

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

环境使用:

  • Python 3.8

  • jupyter --> pip install jupyter notebook

  • pycharm 也可以

模块使用:

  • requests >>> pip install requests 数据请求模块

  • parsel >>> pip install parsel 数据解析模块

  • csv 内置模块

第三方模块安装:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

如果出现爆红, 可能是因为 网络连接超时, 可切换国内镜像源,命令如下:

pip install -i https://pypi.doubanio.com/simple/ requests

python资料、源码、教程\福利皆: 点击此处跳转文末名片获取

python技术实现: <基本流程步骤>

  1. 发送请求, 模拟浏览器对于url地址发送请求

    请求链接地址: https://cs.****.com/ershoufang/

  2. 获取数据, 获取响应数据

    获取数据: 网页源代码 <整个网页数据内容>

  3. 解析数据, 提取我们需要数据

    提取数据: 房源基本信息

  4. 保存数据, 把数据保存本地文件

    保存数据: csv表格文件当中

  5. 多页数据采集

代码展示

获取数据:

# 导入csv模块
import csv# 创建文件
f = open('data.csv', mode='w', encoding='utf-8', newline='')
# 添加字段名
csv_writer = csv.DictWriter(f, fieldnames=['标题','小区','区域','总价','单价','户型','面积','朝向','装修','楼层','年份','建筑结构','详情页'
])
# 写表头
csv_writer.writeheader()
# 导入数据解析模块 第三方模块, 需要安装
import parsel
# 导入数据请求模块 第三方模块 需要安装 pip install requests
import requests
for page in range(1, 101):# 请求链接url = f'https://cs.lianjia.com/ershoufang/pg{page}/'# 伪装浏览器 --> headers 请求头headers = {# User-Agent 用户代理 表示浏览器基本身份信息'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}# 发送请求response = requests.get(url, headers=headers)html_data = response.text # <Response [200]> 响应对象 表示请求成功# 把获取下来 html字符串数据内容 <html_data>, 转成可解析对象selector = parsel.Selector(html_data)"""selector  <Selector xpath=None data='<html class=""><head><meta http-equiv...'> 选择器对象selector.css() 根据标签属性提取数据内容selector.xpath()"""# 提取所有li标签里面房源信息 --> 返回列表, 列表里面元素是选择器对象lis = selector.css('.sellListContent li .info')# for循环遍历, 提取出来, 然后也可以使用css语法或者xpath语法 提取具体数据内容for li in lis:"""get() 获取第一个标签数据内容 <返回字符串>getall() 获取所有标签数据内容 <返回列表>strip() 去除字符串左右两端空格replace('元/平', '') 字符串替换, 把字符串当中 元/平 替换成 '' --> 相当于删除split(' | ') 字符串分割犯法, 把字符串以  |  作为切割, 分割成列表"""title = li.css('.title a::text').get() # 标题info = li.css('.positionInfo a::text').getall()area = info[0].strip() # 列表第一个元素 小区area_1 = info[1] # 区域totalPrice = li.css('.totalPrice span::text').get() # 总价unitPrice = li.css('.unitPrice span::text').get().replace('元/平', '')  # 单价houseInfo = li.css('.houseInfo::text').get().split(' | ')"""有年份, 列表元素就是7个, 没有年份列表元素6个"""house_type = houseInfo[0] # 户型house_area = houseInfo[1] # 面积face = houseInfo[2] # 朝向house = houseInfo[3] # 装修fool = houseInfo[4] # 楼层if len(houseInfo) == 7:date = houseInfo[5] # 年份house_1 = houseInfo[6] # 建筑结构elif len(houseInfo) == 6:date = '未知'house_1 = houseInfo[-1] # 建筑结构href = li.css('.title a::attr(href)').get() # 详情页# 保存字典里面dit = {'标题': title,'小区': area,'区域': area_1,'总价': totalPrice,'单价': unitPrice,'户型': house_type,'面积': house_area,'朝向': face,'装修': house,'楼层': fool,'年份': date,'建筑结构': house_1,'详情页': href,}
#         csv_writer.writerow(dit)
#         print(dit)#     print(title, area, area_1, totalPrice, unitPrice, house_type, house_area, face, house, fool, date, house_1, sep='|')

数据可视化:

import pandas as pd
# 读取数据
df = pd.read_csv('data.csv')
df.head()

house_type_num = df['户型'].value_counts().to_list()
house_type = df['户型'].value_counts().index.to_list()
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
c = (Pie().add("", [list(z) for z in zip(house_type, house_type_num)]).set_global_opts(title_opts=opts.TitleOpts(title="二手房源户型")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
c.load_javascript()
c.render_notebook()
house_num = df['装修'].value_counts().to_list()
house_type_1 = df['装修'].value_counts().index.to_list()
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
c = (Pie().add("", [list(z) for z in zip(house_type_1, house_num)]).set_global_opts(title_opts=opts.TitleOpts(title="二手房源装修占比分布")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
c.render_notebook()
date_num = df['年份'].value_counts().to_list()
date_type = df['年份'].value_counts().index.to_list()
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
c = (Pie().add("", [list(z) for z in zip(date_type, date_num)]).set_global_opts(title_opts=opts.TitleOpts(title="二手房源年份占比分布")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
c.render_notebook()
df.head()

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦

Python采集二手房源数据信息并做可视化展示相关推荐

  1. Python采集二手房源数据信息 基础版, 多线程版

    前言 大家早好.午好.晚好吖 ❤ ~ 环境使用: Python 3.8 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 ...

  2. python将Linux下使用top命令获取的进程信息进行分析做可视化展示

    python将Linux下使用top命令获取的进程信息进行分析做可视化展示 版本 版本 作者 日期 备注 v1.0 ZY 2020.11.10 初版完成 文章目录 python将Linux下使用top ...

  3. 用Python采集财经数据信息并作可视化

    嗨嗨,大家好下午好,我是小圆 ~ 今天给大家分享一下,如何用python采集财经数据信息并作可视化 开发环境: 解释器版本: python 3.8 代码编辑器: pycharm 2021.2 requ ...

  4. Python疫情数据采集, 并做可视化展示

    前言 嗨喽!大家好,这里是魔王~ 本次目的 Python疫情数据采集, 并做可视化展示(数据采集, 数据分析) 知识点: 爬虫基本流程 requests 发送请求 re 正则表达式 json 结构化数 ...

  5. python爬虫tableau数据分析_完美!Python爬招聘数据,Tableau做可视化分析

    原标题:完美!Python爬招聘数据,Tableau做可视化分析 交流群预热好久的可视化交互大屏来啦 1.项目背景 随着科技的飞速发展,数据呈现爆发式的增长,任何人都摆脱不了与数据打交道,社会对于&q ...

  6. Python爬虫爬取疫情数据并可视化展示

    这篇文章主要介绍了Python利用爬虫爬取疫情数据并进行可视化的展示,文中的示例代码讲解清晰,对工作或学习有一定的价值,需要的朋友可以参考一下.编程资料点击领取 目录 知识点 开发环境 爬虫完整代码 ...

  7. Python采集剧本杀店家数据信息,做可视化演示

    前言 哈喽啊,友友们 有喜欢玩桌游或者剧本杀的吗 其实我自己对这个不太感兴趣哈哈,但是也玩过 正好又有朋友约着出去,就是不知道哪家店更值得去 所以趁着还有几天就用python来采集一些 店家的数据信息 ...

  8. 使用python进行北京二手房信息数据分析及可视化展示

    之前我们爬取了贝壳找房上的北京二手房信息,具体可以查看python爬取贝壳找房之北京二手房源信息,现在我们针对获取的数据进行分析及可视化的展示,本文代码和数据均存放在github上,链接地址:贝壳找房 ...

  9. Python网络爬虫爬取招聘数据(利用python简单零基础)可做可视化

    爬取Boss直聘相关的招聘数据 一.相关需求分析 1.目的 二.直聘网页结构分析 1.网页相关值的查找 2.网页的下一页规律查找 三.Python相关的第三库介绍 1.Urllib的介绍 (1)url ...

最新文章

  1. java.util.concurrent.Callable 接口 源码
  2. HTMLCanvasElement.toDataURL()
  3. 基础练习 FJ的字符串
  4. C/C++循环输入问题
  5. oracle中to_char的用法
  6. 485转232转换器产品介绍及性能参数介绍
  7. 打开端口_打印机ip及端口设置
  8. Python Itsdangerous
  9. 团队软件库_R FMEA软件介绍
  10. 信号与系统郭宝龙版 第二章 连续系统的时域分析 思维导图
  11. Md5码的生成及变种Md5码的生成
  12. JAVA的file.separate
  13. pdf 转化为jpg python 批量转化
  14. vs code进行c/c++开发
  15. canvas像素操作、save与restore、合成与变形
  16. 《一千年以后》最后一百元
  17. Myeclipse配置Tomcat
  18. 杂念参加完了广东互联网大会的一些感想
  19. 人到中年,渡人先渡己
  20. Block截获自动变量实现与__block修饰符内部实现

热门文章

  1. android添加或修改默认来电、短信、闹钟、提示音铃声
  2. 快速修改jar包源码
  3. 笔记本电脑打开后不显示桌面_啄木鸟家庭维修|空调打开后不运行是怎么回事...
  4. 解决电脑将在一分钟后自动重启的问题
  5. tengine简单安装_Tengine编译安装
  6. java_方法的覆盖
  7. c++ ANSI与utf8互相转换
  8. java输出一副扑克牌_Java输出扑克牌中的“红黑梅方”和其他表情包
  9. Bezier曲线及其性质
  10. 多云管理平台发展的几个阶段