安居客西安房源爬取 + pyecharts 数据展示

第一步是数据爬取:

import xlwt
from bs4 import BeautifulSoup
from selenium import webdriver
import time,random
from selenium.webdriver import ChromeOptionsdef main():baseurl = "https://xa.fang.anjuke.com/loupan/all/p"datalist = getData(baseurl)savepath = "安居客爬虫数据.xls"saveData(datalist, savepath)def getData(baseurl):datalist = []headers = {"cookie": "isp=true; isp=true; aQQ_ajkguid=C762D025-2585-194F-7317-8EC539296440; _ga=GA1.2.18092521.1626051248; _gid=GA1.2.2133028006.1626051248; id58=e87rkGDrkq+BJ/A5/JzXAg==; 58tj_uuid=4604ab87-5912-4903-a6dc-28ae7ae20bc1; als=0; isp=true; wmda_uuid=dfa952c1ee878d222eeb947c5618cfd7; wmda_new_uuid=1; wmda_visited_projects=%3B8788302075828; cmctid=483; xxzl_cid=629248c0af8e4b1e8a3219e3d1e090d7; xzuid=144b3c94-6fb0-45e0-b7f8-6e43c085f8a4; ctid=31; sessid=A07D28BD-B371-B893-463C-SX0712140406; obtain_by=2; twe=2; wmda_session_id_8788302075828=1626069849725-02cb50ff-be87-431f; init_refer=; new_uv=3; lp_lt_ut=1023adc4fcf5533ab348b520b9a4ce05; ved_loupans=472113; new_session=0","referer": "https://xa.fang.anjuke.com/loupan/all/p13/","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}for i in range(0,26):url = baseurl+ str(i)driver = webdriver.Chrome()driver.get(url)html = driver.page_sourcesoup = BeautifulSoup(html, "html.parser")trs = soup.select("div.key-list>.item-mod")print(len(trs))for div in trs:data=[]name = div.select(".infos>.lp-name>.items-name")[0].get_text()print("名字:" + name)data.append(name)tstate = div.select(".tags-wrap>.tag-panel>i:nth-of-type(1)")if tstate:state = tstate[0].get_text()print(state)data.append(state)else:data.append(" ")position = div.select(".address>.list-map")[0].get_text()print("位置:" + position)data.append(position)thuxing = div.select("div.infos > a.huxing>span:nth-of-type(1)")if thuxing:huxing = thuxing[0].get_text()print(huxing)data.append(huxing)else:data.append(" ")thuxing2 = div.select("div.infos > a.huxing>span:nth-of-type(2)")if thuxing:huxing2 = thuxing[0].get_text()print(huxing2)data.append(huxing2)else:data.append(" ")tarea = div.select("div.infos > a.huxing > span.building-area")if tarea:area = tarea[0].get_text()print(area)data.append(area)else:data.append(" ")ttpe = div.select(".tags-wrap>.tag-panel>.wuyetp")if ttpe:type = ttpe[0].get_text()print("类型:" + type)data.append(type)else:data.append(" ")tshuxing1 = div.select(".tags-wrap>.tag-panel>span:nth-of-type(1)")if tshuxing1:shuxing1 = tshuxing1[0].get_text()print(shuxing1)data.append(shuxing1)else:data.append(" ")tshuxing2 = div.select(".tags-wrap>.tag-panel>span:nth-of-type(2)")if tshuxing2:shuxing2 = tshuxing2[0].get_text()print(shuxing2)data.append(shuxing2)else:data.append(" ")tshuxing3 = div.select(".tags-wrap>.tag-panel>span:nth-of-type(3)")if tshuxing3:shuxing3 = tshuxing3[0].get_text()print(shuxing3)data.append(shuxing3)else:data.append(" ")tshuxing4 = div.select(".tags-wrap>.tag-panel>span:nth-of-type(4)")if tshuxing4:shuxing4 = tshuxing4[0].get_text()print(shuxing4)data.append(shuxing4)else:data.append(" ")tshuxing5 = div.select(".tags-wrap>.tag-panel>span:nth-of-type(5)")if tshuxing5:shuxing5 = tshuxing5[0].get_text()print(shuxing5)data.append(shuxing5)else:data.append(" ")tprize = div.select("div.infos>a.favor-pos>p.around-price,p.favor-tag>span")if tprize:prize = tprize[0].get_text()print(prize)data.append(prize)else:data.append(" ")ts = div.select("div.item-mod>.infos>.tags-wrap>i:nth-of-type(2)")if ts:s = ts[0].get_text()print(s)data.append(prize)else:data.append(" ")datalist.append(data)time.sleep(1)driver.quit()return datalistdef saveData(datalist, savepath):header = ['名字',  '售卖状态','位置', '房型', '房型', '面积', '类型', '属性1', '属性2', '属性3', '属性4', '属性5', '房价']book = xlwt.Workbook(encoding="utf-8", style_compression=0)sheet = book.add_sheet('Sheet1,cell_overwrite_ok=True')for h in range(len(header)):sheet.write(0, h, header[h])for i in range(0, 1531):print("第%d条" % (i + 1))data = datalist[i]for j in range(0, 13):sheet.write(i + 1, j, data[j])book.save(savepath)if __name__ == "__main__":  # 当程序执行时# 调用函数main()# init_db("movietest.db")print("爬取完毕!")

下面用pyecharts对爬取的数据展示:

  1. 漏斗图:
    在这里插入图片描述
    代码:
from pyecharts import options as opts
from pyecharts.charts import Funnel
from pyecharts.faker import Faker# 漏斗
key = ["浐灞","西咸新区","城东","城西","城南","城北","咸阳","鄠邑区","长安","曲江","临潼","经济开发区","高陵","阎良","高新","泾渭"
]
value = [176,200,107,137,129,154,16,20,109,118,30,93,5,19,153,72
]
c = (Funnel().add("房源",[list(z) for z in zip(key, value)],sort_="ascending",label_opts=opts.LabelOpts(position="inside"),gap=3).render("picture/房源占比漏斗图.html")
)
  1. 折线图:
    在这里插入图片描述
from pyecharts.charts import Line
from pyecharts import options as opts
import pandas as pd
path = "data/各区均价.xlsx"
df = pd.read_excel(path)print(df)
line = Line()
line.add_xaxis(df["区"].to_list())line.add_yaxis("均价",df["均价"].to_list())line.set_global_opts(title_opts=opts.TitleOpts(title="西安各区房屋均价"),tooltip_opts=opts.TooltipOpts(trigger="axis",axis_pointer_type="cross"),toolbox_opts=opts.ToolboxOpts(is_show=True),)
line.render("picture/各区均价折线图.html")
  1. 饼图
    在这里插入图片描述
import pyecharts.options as opts
from pyecharts.charts import Pieinner_x_data = ["城东", "城西", "城南", "城北"]
inner_y_data = [107, 137, 129, 154]
inner_data_pair = [list(z) for z in zip(inner_x_data, inner_y_data)]outer_x_data = ["浐灞", "西咸新区", "咸阳", "鄠邑区", "长安区", "曲江区", "临潼区", "经济开发区", "高陵区", "阎良区", "高新区", "泾渭"]
outer_y_data = [176, 200, 16, 20, 109, 118, 30, 93, 5, 19, 153, 72]
outer_data_pair = [list(z) for z in zip(outer_x_data, outer_y_data)](Pie(init_opts=opts.InitOpts(width="1600px", height="800px")).add(series_name="房源占比",data_pair=inner_data_pair,radius=[0, "30%"],label_opts=opts.LabelOpts(position="inner"),).add(series_name="房源占比",radius=["40%", "55%"],data_pair=outer_data_pair,label_opts=opts.LabelOpts(position="outside",formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c}  {per|{d}%}  ",background_color="#eee",border_color="#aaa",border_width=1,border_radius=4,rich={"a": {"color": "#999", "lineHeight": 22, "align": "center"},"abg": {"backgroundColor": "#e3e3e3","width": "100%","align": "right","height": 22,"borderRadius": [4, 4, 0, 0],},"hr": {"borderColor": "#aaa","width": "100%","borderWidth": 0.5,"height": 0,},"b": {"fontSize": 16, "lineHeight": 33},"per": {"color": "#eee","backgroundColor": "#334455","padding": [2, 4],"borderRadius": 2,},},),).set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", orient="vertical")).set_series_opts(tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)")).render("picture/pies.html")
)
  1. 树状图
    在这里插入图片描述
from pyecharts import options as opts
from pyecharts.charts import Treedata = [{"children": [{"children": [{"name": "中铁·卓越城"}, {"name": "融创云潮府"}, {"name": "中铁·卓越城"}, {"name": "公寓-保利·心语花园K2立方"},{"name": "公寓-万科·悦湾·臻域"}, {"name": "中冶奥体云璟"}, {"name": "中粮·奥体壹号"}, {"name": "融创时代奥城"},{"name": "源邸壹号"}, {"name": "中铁·卓越城"}, {"name": "公寓-万科·悦湾·臻域"}], "name": "灞桥区",},{"children": [{"name": "隆基泰和·云玺领峯"}, {"name": "阳光城檀境"}, {"name": "新希望·锦麟天玺"}, {"name": "招商华宇·臻境"},{"name": "商铺-中海·熙峰广场"}, {"name": "紫薇·华发CID中央首府"}, {"name": "隆基泰和·云玺领峯"},{"name": "新希望·锦麟天玺"}, {"name": "荣民捌号"}],"name": "高新区",},{"children": [{"name": "德信·西宸府"}],"name": "鄠邑区",},{"children": [{"name": "公寓-曲江奥园城市天地"},],"name": "曲江",},{"children": [{"name": "盛唐长安4"},],"name": "临潼",},{"children": [{"name": "中建财智广场"},],"name": "经济开发区",},{"children": [{"name": "陕建航天新天地"},{"name": "招商华宇长安4玺"},{"name": "莱安领域"}],"name": "长安区",},],"name": "西安",}
]
c = (Tree().add("", data).set_global_opts(title_opts=opts.TitleOpts(title="西安部分城区部分小区")).render("picture/西安部分城区部分小区.html")
)
  1. 词云
    在这里插入图片描述
#词云图
import pyecharts.options as opts
from pyecharts.charts import WordCloud
import pandas as pdpath = "data/小区.xlsx"
df = pd.read_excel(path)col1 = df["名字"].unique()
col2 = df["名字"].value_counts()list = [tuple(z) for z in zip(list(col1), col2.to_list())](WordCloud().add(series_name="西安小区",data_pair=list, word_size_range=[20,46],shape= 'circle').set_global_opts(title_opts=opts.TitleOpts(title="西安小区", title_textstyle_opts=opts.TextStyleOpts(font_size=23)),tooltip_opts=opts.TooltipOpts(is_show=True),toolbox_opts=opts.ToolboxOpts(is_show=True),).render("picture/xiaoqu_wordcloud.html")
)

想要了解更多pyecharts数据可视化可以查看文档:Echarts

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27313.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看我如何抓取最新房价数据

经过前几年一轮房价大涨&#xff0c;到现在因为国家大力调控等原因&#xff0c;市场已经褪去热度&#xff0c;正在慢慢变得稳定&#xff0c;价格也相较最高时下降了些。那现在房价到底怎样&#xff1f;接下来又会是怎样的发展的趋势&#xff1f;这里我们就可以通过 Python 把最…

python爬取上海链家网二手房数据

1、数据爬取说明 1.1 爬取目的 一个朋友在学习自考&#xff0c;作业是爬取数据进行数据分析&#xff0c;正好最近我在学习python&#xff0c;所以他委托我帮他完成这一工作 1.2使用模块 requests进行网络请求、bs4进行数据解析、xlwt进行excel表格存储 2、网页结构分析 2.…

购房选址分析之上海市

一日不见&#xff0c;如隔三秋。快过年了&#xff0c;凌晨GIS给大家拜个早年&#xff0c;提前祝大家新年快乐&#xff0c;牛气冲天&#xff01; 上期我们用矢量分析中的缓冲区分析和叠加分析的方法对长沙市的购房选址方面的问题进行了探讨&#xff0c;得到了许多小伙伴的回应&a…

链家全国房价数据分析 : 数据分析及可视化

相关文章&#xff1a;链家全国房价数据分析 &#xff1a; 数据获取 上一回我们提到了用爬虫爬取链家的新楼盘和二手房数据信息&#xff0c;这回我们来看看如何对他们进行分析。 新楼盘数据分析 因为我们爬的时候是一个个城市爬的&#xff0c;现在我们要把他们合在一起&#x…

大数据统计租房市场现状(上海篇)

对某方面有统计需求的同学可以留言哟~O(∩_∩)O~&#xff01;&#xff01;&#xff01; 数据下载时间&#xff1a;20170620 房间均价&#xff1a;为了对比1房&#xff0c;2房&#xff0c;3房哪个比较划算引入的概念。一条出租信息中&#xff0c;平均每个房间的价格&#xff0c…

链家全国房价数据分析 : 数据获取

最近一直在看论文&#xff0c;也有很久没有coding了&#xff0c;感觉对爬虫的技术有些生疏&#xff0c;我觉得即使现在手头没有在做这方面的东西&#xff0c;经常爬点对技术保鲜还是很重要的。所以这次我打算爬链家的房价数据&#xff0c;目的主要是对爬虫和Python的东西作一个…

上海二手房网站

文章目录 简介git总体架构开发目录 简介 业务目标&#xff1a;实现上海二手房全量数据动态更新、统计、汇总展示&#xff0c;了解二手房变化趋势。 技术目标&#xff1a;前端到后端技术的demo。前身&#xff1a;租房网站。毕业2年需求变更&#xff1a;租房->买房… git 前…

上海的二手房价有所下跌,现在你们的工资够买间厕所了吗?Python帮你分析上海的二手房价

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者&#xff1a;林小呆 仪表板展示 项目背景 去面试的时候被问上海二手房的一些情况&#xff0c;作为一个土著&#xff0c;我只知道上海这个区…

上海二手房价数据分析

目的:本篇给大家介绍一个数据分析的初级项目,目的是通过项目了解如何使用Python进行简单的数据分析。 数据源:博主通过爬虫采集的安X客上海二手房数据,由于能力问题,只获取了2160条数据。 数据初探 首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seaborn im…

NBA球员投篮数据可视化

最近看了公众号「Crossin的编程教室」的一篇文章。 是有关于NBA球员出手数据的可视化案例&#xff0c;原文链接如下。 个人感觉比较有趣&#xff0c;所以想着自己也来实现一波。 总体上来说差不多&#xff0c;可能就是美观点吧... / 01 / 篮球场 从网上找的篮球场尺寸图&#x…

利用Python进行NBA比赛数据分析

利用Python进行NBA比赛数据分析 一、实验介绍 1.1 内容简介 不知道你是否朋友圈被刷屏过nba的某场比赛进度或者结果&#xff1f;或者你就是一个nba狂热粉&#xff0c;比赛中的每个进球&#xff0c;抢断或是逆转压哨球都能让你热血沸腾。除去观赏精彩的比赛过程&#xff0c;我们…

2021年常规赛NBA球员数据分析

项目介绍&#xff1a; 1、数据来源&#xff1a; 1&#xff09;数据来源腾讯体育NBA数据&#xff0c;爬虫解析三个JS网页解析获得数据&#xff0c;共有150个球员和22个指标&#xff0c;整理后数据最终如下图格式 2&#xff09;球队队徽来自网络 3&#xff09;球队地理位置的经…

kaggle:NBA球员投篮数据分析与可视化(一)

作为数据科学领域的金字招牌&#xff0c;kaggle已成为世界上最受欢迎的数据科学竞赛平台。在kaggle上&#xff0c;每个竞赛题下都藏匿着大批来自世界各地并且身怀绝技的数据科学家。作为一种众包模式&#xff0c;kaggle通过收取部分佣金将企业的数据挖掘问题发布在平台上并设立…

实例:【基于机器学习的NBA球员信息数据分析与可视化】

文章目录 一、项目任务二、代码实现及分析1. 导入模块2. 导入文件并对文件信息进行整体探测3. 数据预处理3.1 查看数据集信息3.2 数据清洗与转换3.3 数据去重 4. 数据可视化4.1 数据相关性4.2 球员数据分析 5. 基于逻辑回归的球员分类5.1 数据重定义5.2 划分数据集与验证集5.3 …

利用Python预测NBA比赛结果

关注「实验楼」&#xff0c;每天分享一个项目教程 NBA总决赛正在火热上演&#xff0c;而有数据的地方就有预测&#xff0c;本教程就教你使用Python预测NBA比赛的结果。 正文共&#xff1a;3240 字 预计阅读时间&#xff1a;8 分钟‍ 一、实验介绍 1.1 内容简介 不知道你是否…

PayPal,Stripe,Square轮询支付系统

轮询展示 展示我们轮询的页面 轮询套餐 根据不同的用户和需求&#xff0c;可以选择不同的套餐 普通版 1500元 1年 1个用户 支持Paypal/Stripe 不限制A站个数 不限制B站个数 不限制提交模式 订单管理 物流管理 风控管理 必要的网站数据处理 24小时远程协助 开始…

使用chatgpt过掉邮生活滑块记录 ob+wasm print参数

****## 邮生活滑块记录 地址 &#xff1a;‘aHR0cHM6Ly95b3VzaGVuZ2h1by4xMTE4NS5jbi93eC8jL2xheGluUmVnaXN0P3VzZXJJZD0yMTA1NTQ2MTYxOSZhY3Rpdml0eUlkPTI4MiZydWxlSWQ9Mjg’ 如图 如上图 大概就这点参数 基本都是前面请求拿的 除了print enmiid 。。。。。。 结果&#xff1…

连续支付(周期扣款)功能开发及注意事项

最近有一个版本需求&#xff0c;需要接入周期扣款做连续会员的功能&#xff0c;没想到这一做就是小半个月&#xff0c;趟了很多坑&#xff0c;所以觉得有必要记录一下 1.周期扣款总体设计 在支付宝和微信中&#xff08;非苹果支付&#xff09;&#xff0c;周期扣款的流程主要有…

证监会计算机类笔试上岸经验,公务员考试笔试166分上岸经验(全干货)

原标题&#xff1a;公务员考试笔试166分上岸经验(全干货) 一、考前自审 1、具备公务员考试需要的相关知识结构与基本素质(70%)。包括政治素质(理解和掌握国家大政方针与政策)&#xff0c;基本科学素质&#xff0c;常识&#xff0c;阅读理解能力&#xff0c;语言功底&#xff0c…

行政职业能力测试软件,公务员行政职业能力测试考试宝典

公务员行政职业能力考试宝典是一款通用的考试练习软件&#xff0c;丰富的题库&#xff0c;包含历年真题和模拟试题&#xff0c;有时间就可以开启刷题模式&#xff0c;对于错误的题目可以进行错题重做、解题思路介绍、统计分析等&#xff0c;达到熟练的程度&#xff0c;大大提高…