个人建设电影网站备案,滨海网站建设公司,天天作文网,wordpress繁体字插件前言
嗨喽~大家好呀#xff0c;这里是魔王呐 ❤ ~! 模块使用#xff1a;
爬虫部分: requests parsel csv
数据分析部分: pandas pyecharts
如何安装模块: win R 输入 cmd 输入安装命令#xff1a; pip install 模块名 回车 pycharm里面安装 terminal 输入安装命令…前言
嗨喽~大家好呀这里是魔王呐 ❤ ~! 模块使用
爬虫部分: requests parsel csv
数据分析部分: pandas pyecharts
如何安装模块: win R 输入 cmd 输入安装命令 pip install 模块名 回车 pycharm里面安装 terminal 输入安装命令 pip install 模块名 回车
模块安装失败的原因 提示pip 不是内部命令 你python环境变量可能没有设置好 有安装进度条显示但是安装到一半出现报错了 因为python安装模块都是在国外的网址进行下载安装的 国内请求国外 网速很慢 下载速度大概只有 几KB read time out 网络连接超时 你可以切换为国内的镜像源 明明在cmd里面安装好了但是在pycharm 提示我没有这个模块 你pycharm里面python解释器没有设置你在pycharm设置里面重新设置一下
开发环境 python 3.6 pycharm
流程思路: 确定目标需求 python采集旅游景点数据 / 去哪儿~ 发送请求 获取数据 解析数据 保存数据 需要 源码 . 素材 . 解答 点击领取即可 代码展示
采集数据
导入模块
import requests # 发送请求模块 第三方模块 pip install requests
import parsel # 数据解析模块 第三方模块 pip install 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):# {}.format(page) 字符串格式化的方法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() # 地区# attr属性选择器 replace() 字符串替换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()#查询3A及以上景点
df[df[星级]!无].sort_values(星级,ascendingFalse)尾语
要成功先发疯下定决心往前冲
学习是需要长期坚持的一步一个脚印地走向未来
未来的你一定会感谢今天学习的你。
—— 心灵鸡汤
本文章到这里就结束啦~感兴趣的小伙伴可以复制代码去试试哦 问题解答 · 源码获取 · 技术交流 · 抱团学习请联系