公司网站建设合同模板,长沙做公司网站大概多少钱,网站域名注销电话,微信公众平台开发文档人生苦短#xff0c;我用python
真的好想出去玩啊#xff01;#xff01;#xff01;
春游啊这是#xff01;#xff01;#xff01;
万物复苏的好季节#xff01;#xff01;#xff01; python 安装包资料:点击此处跳转文末名片获取 一、模块使用#xff1a;
…人生苦短我用python
真的好想出去玩啊
春游啊这是
万物复苏的好季节 python 安装包资料:点击此处跳转文末名片获取 一、模块使用
爬虫部分: requests parsel csv
数据分析部分: pandas pyecharts
二、开发环境 python 3.6 pycharm 三、流程思路:
1. 确定目标需求
python采集旅游景点数据 / 去哪儿~
2. 发送请求
3. 获取数据
4. 解析数据
5. 保存数据 四、代码展示
采集数据
导入模块
import requests
import parsel
import csv
import time 写入表格
f open(张家界景点.csv, modea, encodingutf-8-sig, newline)
csv_writer csv.DictWriter(f, fieldnames[景区, 星级, 地区, 热度, 销量, 地址,价格, 简介, 详情页])
csv_writer.writeheader() 多页采集
for page in range(1, 12):print(f正在爬取第{page}页数据内容)time.sleep(2)请求链接 url fhttps://*****.com/ticket/list_%E5%BC%A0%E5%AE%B6%E7%95%8C.html?frommps_search_suggest_hkeyword%E5%BC%A0%E5%AE%B6%E7%95%8Cpage{page}请求头:把python代码伪装成浏览器 给服务器发送请求 headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36}response requests.get(urlurl, headersheaders)获取网页文本数据 response.text # print(response.text)解析数据 css选择器 根据标签提取数据内容 第一次提取 所以景区标签内容 返回的页是一个对象 列表 id选择器 直接可以使用# 开头 selector parsel.Selector(response.text)lis selector.css(#search-list .sight_item_detail)for li in lis:title li.css(.name::text).get()level li.css(.level::text).get() area li.css(.area a::text).get() hot li.css(.product_star_level em::attr(title)).get().replace(热度: , )hot int(float(hot)*100)address li.css(.address span::attr(title)).get() price li.css(.sight_item_price em::text).get() hot_num li.css(.hot_num::text).get() intro li.css(.intro::text).get() href li.css(.name::attr(href)).get()href https://*****.com/ hrefdit {景区: title,星级: level,地区: area,热度: hot,销量: hot_num,地址: address,价格: price,简介: intro,详情页: href,}csv_writer.writerow(dit)print(title, level, area, hot, address, price, hot_num, intro, href, sep | )旅游数据可视化
导入景点数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.rcParams[font.sans-serif] [SimHei] # 设置加载的字体名
plt.rcParams[axes.unicode_minus] False # 解决保存图像是负号-显示为方块的问题
import jieba
import re
from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import stylecloud
from IPython.display import Image df pd.read_csv(rc:\python\demo2\爬虫入门教程45 五一去哪儿玩\去哪儿.csv)
df.head()删除重复数据
df df.drop_duplicates()查看数据信息
df.info() 景点价格价格Top20
df_qunarPrice df.pivot_table(index景区,values价格)
df_qunarPrice.sort_values(价格,inplaceTrue,ascendingFalse)
df_data df_qunarPrice[:20]
from pyecharts import options as opts
from pyecharts.charts import Barc (Bar().add_xaxis(df_data.index.tolist()).add_yaxis(,df_data[价格].values.tolist()).set_series_opts(label_optsopts.LabelOpts(is_showFalse)).set_global_opts(title_optsopts.TitleOpts(title景点价格Top20),xaxis_optsopts.AxisOpts(axislabel_optsopts.LabelOpts(rotate90)),))
c.render_notebook()评分TOP20景点
df_score df.pivot_table(index景区,values热度)
df_score.sort_values(热度,inplaceTrue,ascendingFalse)
df_data df_score[:20]
from pyecharts import options as opts
from pyecharts.charts import Barc (Bar().add_xaxis(df_data.index.tolist()).add_yaxis(,df_data[热度].values.tolist()).set_series_opts(label_optsopts.LabelOpts(is_showFalse)).set_global_opts(title_optsopts.TitleOpts(title评分TOP20景点),xaxis_optsopts.AxisOpts(axislabel_optsopts.LabelOpts(rotate90)),))
c.render_notebook()df_saleCount df.pivot_table(index景区,values销量)
df_saleCount.sort_values(销量,inplaceTrue,ascendingFalse)
df_data df_saleCount[:20]
df_data.values月销量TOP20景点
df_saleCount df.pivot_table(index景区,values销量)
df_saleCount.sort_values(销量,inplaceTrue,ascendingFalse)
df_data df_saleCount[:20]from pyecharts import options as opts
from pyecharts.charts import Barc (Bar().add_xaxis(df_data.index.tolist()).add_yaxis(,df_data[销量].values.tolist()).set_series_opts(label_optsopts.LabelOpts(is_showFalse)).set_global_opts(title_optsopts.TitleOpts(title月销量TOP20景点),xaxis_optsopts.AxisOpts(axislabel_optsopts.LabelOpts(rotate90)),))
c.render_notebook()景点等级分布
df_star df[星级].value_counts()
df_star df_star.sort_values(ascendingFalse)
print(df_star)
c (Pie(init_optsopts.InitOpts(themeThemeType.WALDEN)).add(,[list(z) for z in zip(df_star.index.to_list(),df_star.to_list())]).set_global_opts(legend_opts opts.LegendOpts(is_show False),title_optsopts.TitleOpts(title景点等级分布,subtitle数据来源去哪儿网,pos_top0.5%,pos_left left)).set_series_opts(label_optsopts.LabelOpts(formatter{b}:{d}%,font_size16)))
c.render_notebook()
df[df[星级]!无].sort_values(星级,ascendingFalse)还是要多出去走一走散散心的鸭~
要趁大好春光去康康这个世界❤ 问题解答 · 源码获取 · 技术交流 · 抱团学习请联系 文章转载自: http://www.morning.wklhn.cn.gov.cn.wklhn.cn http://www.morning.rfqk.cn.gov.cn.rfqk.cn http://www.morning.ypklb.cn.gov.cn.ypklb.cn http://www.morning.rnjgh.cn.gov.cn.rnjgh.cn http://www.morning.xltdh.cn.gov.cn.xltdh.cn http://www.morning.rlbg.cn.gov.cn.rlbg.cn http://www.morning.zkzjm.cn.gov.cn.zkzjm.cn http://www.morning.mmqng.cn.gov.cn.mmqng.cn http://www.morning.xxwl1.com.gov.cn.xxwl1.com http://www.morning.ltypx.cn.gov.cn.ltypx.cn http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn http://www.morning.dwfxl.cn.gov.cn.dwfxl.cn http://www.morning.jsljr.cn.gov.cn.jsljr.cn http://www.morning.yrjkp.cn.gov.cn.yrjkp.cn http://www.morning.yrdt.cn.gov.cn.yrdt.cn http://www.morning.bylzr.cn.gov.cn.bylzr.cn http://www.morning.tnwwl.cn.gov.cn.tnwwl.cn http://www.morning.kzslk.cn.gov.cn.kzslk.cn http://www.morning.fdzzh.cn.gov.cn.fdzzh.cn http://www.morning.rjtmg.cn.gov.cn.rjtmg.cn http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn http://www.morning.youngbase.cn.gov.cn.youngbase.cn http://www.morning.lgsfb.cn.gov.cn.lgsfb.cn http://www.morning.qdlr.cn.gov.cn.qdlr.cn http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn http://www.morning.mcjrf.cn.gov.cn.mcjrf.cn http://www.morning.ykklw.cn.gov.cn.ykklw.cn http://www.morning.bxrlt.cn.gov.cn.bxrlt.cn http://www.morning.wkkqw.cn.gov.cn.wkkqw.cn http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn http://www.morning.lkwyr.cn.gov.cn.lkwyr.cn http://www.morning.znknj.cn.gov.cn.znknj.cn http://www.morning.mlnby.cn.gov.cn.mlnby.cn http://www.morning.knngw.cn.gov.cn.knngw.cn http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn http://www.morning.ygkq.cn.gov.cn.ygkq.cn http://www.morning.lgnz.cn.gov.cn.lgnz.cn http://www.morning.htjwz.cn.gov.cn.htjwz.cn http://www.morning.rjnrf.cn.gov.cn.rjnrf.cn http://www.morning.kjdxh.cn.gov.cn.kjdxh.cn http://www.morning.lsyk.cn.gov.cn.lsyk.cn http://www.morning.lnmby.cn.gov.cn.lnmby.cn http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn http://www.morning.qlrwf.cn.gov.cn.qlrwf.cn http://www.morning.tgtsg.cn.gov.cn.tgtsg.cn http://www.morning.trfrl.cn.gov.cn.trfrl.cn http://www.morning.xyrw.cn.gov.cn.xyrw.cn http://www.morning.nwgkk.cn.gov.cn.nwgkk.cn http://www.morning.pszw.cn.gov.cn.pszw.cn http://www.morning.lwyqd.cn.gov.cn.lwyqd.cn http://www.morning.fyzsq.cn.gov.cn.fyzsq.cn http://www.morning.pndhh.cn.gov.cn.pndhh.cn http://www.morning.ghcfx.cn.gov.cn.ghcfx.cn http://www.morning.flhnd.cn.gov.cn.flhnd.cn http://www.morning.wnrcj.cn.gov.cn.wnrcj.cn http://www.morning.kcwkt.cn.gov.cn.kcwkt.cn http://www.morning.xmwdt.cn.gov.cn.xmwdt.cn http://www.morning.lbgfz.cn.gov.cn.lbgfz.cn http://www.morning.dnls.cn.gov.cn.dnls.cn http://www.morning.bpmfg.cn.gov.cn.bpmfg.cn http://www.morning.jzfxk.cn.gov.cn.jzfxk.cn http://www.morning.xhrws.cn.gov.cn.xhrws.cn http://www.morning.syznh.cn.gov.cn.syznh.cn http://www.morning.sjwzz.cn.gov.cn.sjwzz.cn http://www.morning.bby45.cn.gov.cn.bby45.cn http://www.morning.bkgfp.cn.gov.cn.bkgfp.cn http://www.morning.bfybb.cn.gov.cn.bfybb.cn http://www.morning.zyslyq.cn.gov.cn.zyslyq.cn http://www.morning.hmktd.cn.gov.cn.hmktd.cn http://www.morning.nkcfh.cn.gov.cn.nkcfh.cn http://www.morning.tgyqq.cn.gov.cn.tgyqq.cn http://www.morning.bwttj.cn.gov.cn.bwttj.cn http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn http://www.morning.srndk.cn.gov.cn.srndk.cn http://www.morning.hbnwr.cn.gov.cn.hbnwr.cn http://www.morning.pgcmz.cn.gov.cn.pgcmz.cn http://www.morning.dcccl.cn.gov.cn.dcccl.cn http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn http://www.morning.rkmhp.cn.gov.cn.rkmhp.cn