python爬取旅游数据,python爬虫旅游景点
用计算机编程语言采集【去哪了】旅游景点攻略,可视化分析旅游出行数据_mb628b309d85c3f的技术博客_博客
知识点要求发送网络请求帕塞尔解析数据战斗支援车保存数据第三方库请求点安装请求稀疏管安装帕塞尔开发环境:版本:python 3.8编辑器:pycharm 2021.2
爬虫程序导入模块# 发送网络请求的模块
导入请求
# 解析数据的模块
导入帕塞尔
导入战斗支援车
导入时间
随机导入发送请求URL=f https://旅行。去哪儿网。com/旅游书/列表。htm? page=1 order=hot_heat
#回应[200]:告诉我们请求成功了
response=requests.get(url)获取数据(网页源代码)html_data=response.text解析网页(回复正则表达式,css选择器,xpath,bs4/六年没更新了,json)# html_data:字符串
# 我们现在要把这个字符串变成一个对象
选择器=parsel .选择器(html_data)
#:属性(href) url_list:列表
url_list=selector.css( .b _策略_列表李h2 a:attr(href)).getall()
对于全球资源定位器(Uniform Resource Locator)列表中的详细信息网址:
# 字符串的替换方法
详细信息id=详细信息URL。替换(/姬友/,)
URL _ 1= https://旅行。去哪儿网。com/travel book/note/ detail _ id
打印(网址_1)向详情页网站发送请求(获取,发布)# https://travel.qunar.com/travelbook/note/7701502
response_1=requests.get(url_1).文本解析网页selector_1=parsel .选择器(响应_1)
#:第n个孩子():伪类选择器
# *文本提取文本内容
# * 代表所有
# 地点
title=selector_1.css( .b _ crumb _ cont *:n-child(3):text ).获取()。替换(旅游攻略, )
# 短评
comment=选择器_ 1。CSS(。标题。white:text’).获取()
# 出发日期
日期=选择器_ 1。CSS( # js _ main left div。前言ul李。f _ item。当p跨度。data:text’).获取()
# 天数
天数=选择器_ 1。CSS( # js _ main left div。前言ul李。f _ item。多长时间跨度。data:text’).获取()
# 人均消费
钱=选择器_ 1。CSS( # js _ main left div。b _前言ul李。f _ item。多长时间?data:text’).获取()
# 人物
character=选择器_ 1。CSS( # js _ main left div。前言ul李。f _ item。世界卫生组织。data:text’).获取()
# 玩法
播放列表=选择器1。CSS( # js _ main left div。前言ul李。f _ item。p跨度如何。data span:text’).getall()
播放=" .加入(播放列表)
# 浏览量
count=selector_1.css( .view _ count:text’).获取()
打印(标题、评论、日期、天数、金钱、角色、游戏、计数)保存数据# 保存成战斗支援车
csv_qne=open(去哪儿 csv ,模式=a ,编码=utf-8 ,换行符= )
csv_writer=csv.writer(csv_qne)
# 写入数据
csv_writer.writerow([地点, 短评, 出发时间, 天数, 人均消费, 人物, 玩法, 浏览量])
数据可视化导入模块进口熊猫作为螺纹中径
从pyecharts.commons.utils导入代码
从pyecharts .图表导入*
从肾盂造影图将选项作为选项导入导入数据data=pd.read_csv(去哪儿_数分. CSV’)
数据
旅游胜地前十名及对应费用bar=(
Bar(init_opts=opts .InitOpts(高度= 500像素,宽度= 1000像素,主题=黑暗))。add_xaxis(m2)。add_yaxis(
目的地前10名,
n2,
label_opts=opts .LabelOpts(is_show=True,position=top ),
itemstyle_opts=opts .ItemStyleOpts(
color=JsCode( 新图表。图形。线性梯度(
0,0,0,1,[{offset: 0,color: rgb(255,99,71)},{offset: 1,color: rgb(32,178,170)}])
)
)
)。集合_全局_opts(
title_opts=opts .标题选项(
title=目的地前10名’),
xaxis_opts=opts .AxisOpts(name=景点名称,
type_=category ,
axislabel_opts=opts .标签(旋转=90 ),
),
yaxis_opts=opts .轴零件(
name=数量,
min_=0,
max_=120.0,
splitline_opts=opts .SplitLineOpts(is_show=True,linestyle_opts=opts .LineStyleOpts(type_=dash ))
),
工具提示_opts=opts .TooltipOpts(trigger=axis ,axis_pointer_type=cross )
)。集合系列选项(
markline_opts=opts .MarkLineOpts(
数据=[
opts .MarkLineItem(type_=average ,name=均值),
opts .MarkLineItem(type_=max ,name=最大值),
opts .MarkLineItem(type_=min ,name=最小值),
]
)
)
)
bar.render_notebook()
bar=(
Bar(init_opts=opts .InitOpts(高度= 500像素,宽度= 1000像素,主题=黑暗))。add_xaxis(loc)。add_yaxis(
人均费用,
价格均值2,
label_opts=opts .LabelOpts(is_show=True,position=top ),
itemstyle_opts=opts .ItemStyleOpts(
color=JsCode( 新图表。图形。线性梯度(
0,0,0,1,[{offset: 0,color: rgb(255,99,71)},{offset: 1,color: rgb(32,178,170)}])
)
)
)。集合_全局_opts(
title_opts=opts .标题选项(
title=各景点人均费用),
xaxis_opts=opts .AxisOpts(name=景点名称,
type_=category ,
axislabel_opts=opts .标签(旋转=90 ),
),
yaxis_opts=opts .轴零件(
name=数量,
min_=0,
max_=2000.0,
splitline_opts=opts .SplitLineOpts(is_show=True,linestyle_opts=opts .LineStyleOpts(type_=dash ))
),
工具提示_opts=opts .TooltipOpts(trigger=axis ,axis_pointer_type=cross )
)。集合系列选项(
markline_opts=opts .MarkLineOpts(
数据=[
opts .MarkLineItem(type_=average ,name=均值),
opts .MarkLineItem(type_=max ,name=最大值),
opts .MarkLineItem(type_=min ,name=最小值),
]
)
)
)
bar.render_notebook()
出游方式分析pie=(Pie(init_opts=opts .InitOpts(theme=dark ,width=1000px ,height=800px ))。add(,[z for z in zip(m1,n1)],
半径=[40% , 65%])。set _ global _ opts(title _ opts=opts .TitleOpts(title=去哪儿\n\n出游结伴方式,pos_left=居中,pos_top=居中,
title_textstyle_opts=opts .TextStyleOpts(
color= # FF6A6A ,font_size=30,font_weight=bold ),
),
visualmap_opts=opts .VisualMapOpts(is_show=False,
min_=38,
max_=641,
是_分段=假,
维度=0,
range_color=[#9400D3 , #008afb , #ffec4a , #FFA500 , #ce5777]),
legend_opts=opts .LegendOpts(is_show=False,pos_top=5% ),
)。set _ series _ opts(label _ opts=opts .LabelOpts(formatter={b}: {c} ,font_size=12),
工具提示_opts=opts .TooltipOpts(trigger=item ,formatter={b}: {c} ),
itemstyle_opts={normal: {
barBorderRadius: [30,30,30,30],
"暗影模糊":10,
shadowColor: rgba(0,191,255,0.5),
shadowOffsetY: 1,
"不透明度":0.8
}
})
)
pie.render_notebook()
出游时间分析line=(
线条()。add_xaxis(m4.tolist())。add_yaxis( ,n4.tolist())
)
line.render_notebook()
2021年的旅游时间曲线大约在五月一号起伏最大,原因肯定是因为假期调休延长至四天,为了调整自己生活及工作的状态,很多人利用这个假期去旅行放松自己。
出游玩法分析m5=[]
n5=[]
对于范围内的我(20岁):
m5 .追加(列表[我][0])
n5。附加(列表[我][1])
m5。反向()
m6=m5
n5。反转()
n6=n5
bar=(
Bar(init_opts=opts .InitOpts(theme=dark ,width=1000px ,height=500px ))。add_xaxis(m6)。add_yaxis(,n6)。set _ series _ opts(label _ opts=opts .LabelOpts(is_show=True,
position=insideRight ,
font_),
itemstyle_opts=opts .ItemStyleOpts(
color=JsCode( 新电子海图。图形。线性梯度(1,0,0,0,
[{
偏移量:0,
颜色: rgb(255,99,71)
}, {
偏移量:1,
颜色: rgb(32,178,170)
}])))
)。集合_全局_opts(
title_opts=opts .TitleOpts(title=出游玩法分析),
xaxis_opts=opts .AxisOpts(axislabel_opts=opts .标签opts(旋转=45),
legend_opts=opts .LegendOpts(is_show=True))。反转_轴()
)
bar.render_notebook()
"摄影"和"美食"可谓与旅行息息相关,一次完整的旅行最不能缺的就是"摄影",拍美食发到朋友圈、拍风景发到朋友圈、拍完美的自己发到朋友圈;工作之后就没有了寒暑假,所以利用周末来一次短途旅行就成为了大多数人的首选。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。