赞
踩
Python爬虫技术可以帮助我们获取旅游景点的热度和消费价格等相关数据,这些信息对于选择旅游目的地非常重要。通过爬取各大旅游网站或者社交媒体平台的数据,我们可以得到各个景点的热度排名和用户评价等信息,同时还能获取到景点的门票价格、住宿费用以及其他消费项目的平均价格。
利用Python爬虫技术,我们可以自动化地获取这些数据,并将其整理成易于阅读的格式,例如生成一个表格或者图表。这样,我们就能够快速准确地比较各个景点的热度和消费价格,从而更好地做出旅游决策。
比如,我们可以通过爬取各个景点的热度排名,了解哪些景点近期受到游客的热捧,从而选择热门景点,享受更好的旅游体验。同时,我们也可以通过获取消费价格数据,对比不同景点的门票价格、住宿费用等,帮助我们在预算范围内选择适合的旅游目的地。
总之,利用Python爬虫技术获取旅游景点的热度和消费价格等数据,可以帮助我们更加科学地选择旅游目的地,提供更好的旅游体验。
旅游是一项受欢迎的活动,不仅因为它可以带给人们不同的体验和享受,还因为它可以成为人们的一种消费方式。因此,旅游的热度和消费价格是人们选择旅游目的地的两个重要因素。
pip install requests
1.导入相应的库
- import requests
- import parsel
- import time
- import csv
2.利用了requests库发送HTTP请求,通过设置请求头模拟浏览器的方式获取数据。代码中的循环语句用于爬取多页数据,在这里我只爬取了第1页数据,如果需要爬取多页的数据,可以输入for page in range(1,3)就是爬取第1-3页的内容
- for page in range(1, 2):
- # '{}'.format(page) 字符串格式化的方法
- print(f'===============================正在爬取第{page}页数据内容=======================================')
- time.sleep(2)
- url = f'https://piao.qunar.com/ticket/list.htm?keyword=%E6%B2%B3%E6%BA%90®ion=&from=mpl_search_suggest&keyword=%E6%B2%B3%E6%BA%90&page={page}'
- # 请求头:把python代码伪装成浏览器 给服务器发送请求
- headers = {
- 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobile Safari/537.36 Edg/112.0.1722.58',
- 'Cookie': 'SECKEY_ABVK=xjHYNyvTER514p26YGWC343OQQWweJehu66r/6cPc24%3D; BMAP_SECKEY=y0qt7sYdJfhqzvqZ18l67KmoJlBuqetWD1zdz5MzwuZrQHvAwF6UUZ9zuKNRvz9pQEvygHkfFMg7RTqqxusNqVCSbZh9q_jHzbKvreaWNS2Ki_fgaM9PUa-LxFRWBpYjj2b_AS5EMFSJvegKEMYmSOA5ll-No9gP4F-vAHnGvhb5l17PnvU8aVvLT2o30cj-; QN1=00008c002eb4517eb5a80697; QN99=6026; QunarGlobal=10.66.70.17_7b56d759_18879a3b151_-210e|1685672123197; qunar-assist={%22version%22:%2220211215173359.925%22%2C%22show%22:false%2C%22audio%22:false%2C%22speed%22:%22middle%22%2C%22zomm%22:1%2C%22cursor%22:false%2C%22pointer%22:false%2C%22bigtext%22:false%2C%22overead%22:false%2C%22readscreen%22:false%2C%22theme%22:%22default%22}; csrfToken=5jYhreufGA78TXFn4YaTat5MVYZwDgya; QN601=5cfdfde462b48b806337ef3c5d223618; _i=VInJOmiPqzxq2ZR1YnO78qZyXWtq; QN163=0; QN269=55D9685000EB11EE9B7CFA163E8F381D; fid=c24aeb7c-c5a0-486d-8072-0817e281a724; QN48=tc_9c1923fcdb9ffb69_18879e3687e_3940; ariaDefaultTheme=null; QN243=44; QN57=16856739703210.8698434013169207; Hm_lvt_15577700f8ecddb1a927813c81166ade=1685673970; QN63=%E6%B2%B3%E6%BA%90; QN300=s%3Dbing; QN71=MTEzLjgxLjMuMjEyOuaDoOW3njox; QN205=s%3Dbing; QN277=s%3Dbing; _vi=mWJI1m2_O13zAn2BVaJgsh9oiy2HENM6-UJhhjMeQBCgf0pG6Cr0bvzKWAB1JpR-DS_3uI0Y31Yt4bRAjNKFdDRAaRIDfLq_1SB027_HYVW1AD-NL9v6blu0jF2dElT7idV_5VbLsXD6vpFmW6Knzr3d7iy7KsytuU6mHXT11v_m; QN267=085053407291d013c7; QN58=1685759689485%7C1685763244022%7C12; JSESSIONID=22D7903E31288266A0301A5F89AADD87; __qt=v1%7CVTJGc2RHVmtYMStoSGxOT3A4RzZGN05DNllpRzlqMm1kM0x5VXAxdGFJdUh4SXZJZVZZOUFrdjA1cmhSeFUwd3lVbDA4UWVrb3J4ZDhZbytYcDdMM1NWT2hpNXJ0SmYwb1dnb3lNMjNhWXY1R0pKM21kUlE5MW1GOGorZ1RMbjI5OTgzZ0NQaVlPZVdHOXdQRmxnN1FtRXZFQWFBLzByZjRKNXNpclppV1ljPQ%3D%3D%7C1685763244171%7CVTJGc2RHVmtYMS9IM2FHam5MNUpEVFEySngvV3NZYWtQaTlUNGRMNThSQ3VQRUo5cGFSTkorTUlhWGVvUUlzQUQwNmJTK21haFh4M01tYXRDSFZ1Umc9PQ%3D%3D%7CVTJGc2RHVmtYMSsvNjh2VTBDVmNTY3F0WE9CTWdPUWtCcFFNcDFLdjJrSXB0cUhLSGVJR09lbXBiaVczRlhTcGQyKzRXbkpTek1XTC9oRlZoM2xYMng4SVVMRGZlaHJrU3VtRkdUdUx5WGpDN0U2NWVERWVKenkrOTNGUURaSy9EeWVpcnQrUXlZVk5mY3NiaDFpdzVSTnRmWTRwUEkxN2lmdlI5cW5KcEp5Q2RiT1YxQ1BSSEM2MFZSZDNuLy96T3kwYklIcm9uOWpqZnI3bTBMWW93ZWZyMmEyQ21HUW5NbHJWYVR5Q3VIMXNjSzNTTXFYWUpLTG5HdVh0YnBueUk0VDlHSWpENWxyTnRFays0NytlS1ZyQmxrTmdwbEo5OFhGbktWOEFCK2IvbEpiZG4rTzFxWlgrQ2pmMUl6ZkdMeEErNUVyVjBEaHhWN1AzMC9Nd0ZQK2xWelNUVUgyNW0rTUVlQTVKbGlhR0tST29oRzRhempOZVVESG1LMDlTdWlWQXpHWnErQXk3YmdCQWQwZG81dkhoc1NsQW9YaVJBOWlQZjN5MEpsRzJtS2gyeXY2QzE0OHArbDFoNGlVcW5MWGFkM080SjErck56bnZsTi9FcjNZOWtSMUNHYS9Dd0QrQ09LY3RpNmZCSE9GUWFwV3NaUzZQRGZOakxLMHhRTmo1ZUNhSko3ZDZEWXdHeWdpYURDUVpmenJtK1hwUjFLdU04UFFBdUNKVlR5VlRaYlpsMU9BZmpqd3lkT2paQzJlQUVjM0J2cG1FKzlYcXlQUVVjbVc3UkJ1b1U3RU1BVHVQemJzR0FiU2hCZXNWam9FTjJqa2IrSVQ0Q3h4SGVleHlOVDRYT2R3K2hOYzc1TEZIQ3lPSWRLM1NNcG5mUWJkRVNiNTZxZ0ZwZnZtZEhzNFBKWk5hWHJ6MDI4aGhuYWhrWDFjdDQ4S3Z0aEpqMjVSenZVaVdQMjJ3VzBvNUhoenpNTVVhU0dvPQ%3D%3D; Hm_lpvt_15577700f8ecddb1a927813c81166ade=1685763244; QN271=83df3432-fa03-46bb-a8e5-df1a3312d171',
- }
- response = requests.get(url=url, headers=headers)
3.使用Python的爬虫库Scrapy爬取去哪儿网站上的河源旅游景点信息,并将提取到的数据写入CSV文件中。具体实现过程是使用CSS选择器从网页中提取景区的名称、星级、地区、热度、销量、地址、价格、简介和详情页等信息,并将这些信息写入CSV文件中。
- selector = parsel.Selector(response.text)
- # css选择器 根据标签提取数据内容
- # 第一次提取 所以景区标签内容 返回的页是一个对象 列表
- # id选择器 直接可以使用# 开头
- lis = selector.css('#search-list .sight_item_detail')
- with open('河源旅游景点.csv', 'w', newline='', encoding='utf-8-sig') as csvfile:
- fieldnames = ['景区', '星级', '地区', '热度', '销量', '地址', '价格', '简介', '详情页']
- writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
- writer.writeheader() # 写入表头
-
- 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://piao.qunar.com/' + href
- dit = {
- '景区': title,
- '星级': level,
- '地区': area,
- '热度': hot,
- '销量': hot_num,
- '地址': address,
- '价格': price,
- '简介': intro,
- '详情页': href,
- }
- writer.writerow(dit) # 写入每个景区的数据
-
-
4.爬取的数据如下,我们可以对这些数据进行一个分析统计,还可以用数据可视化来统计他们的变量
想到用数据可视化就可以想到pandas来做
首先,我们先把这个csv文件读取出来
- import pandas as pd
- df = pd.read_csv('河源旅游景点.csv')
- df
就能读取到这个csv文件,接下来就可以将爬取到的数据,我们通过景区和销量做成折线图,因为景区名称比较长,导致x轴的名称有点模糊
- import pandas as pd
- from pylab import *
-
- mpl.rcParams['font.sans-serif'] = ['SimHei']
-
- data = pd.read_csv('C:/爬虫/河源旅游景点.csv') # 读取csv文件
- x_arr = data['景区'] # x轴数据
- y_arr = data['销量'] # y轴数据
-
- plt.plot(x_arr, y_arr, color='blue') # 绘制折线图
- plt.xlabel(u'月份') # x轴描述信息
- plt.ylabel(u'销售量') # y轴描述信息
- plt.title(u'销售量折线图') # 指定图表描述信息
- plt.ylim(0, 150) # 指定Y轴的高度
- plt.savefig('销售量折线图') # 保存为图片
- plt.show()
将他们数据销量和景区做成柱状图,在这个柱状图中,我们可以看到销量最高的是万绿湖景点,说明河源市万绿湖景点是最受游客欢迎的,可以看到最少的是河源恐龙博物馆里面,因为很早以前,河源具有恐龙之乡的传说,所以就打造了河源恐龙博物馆
- import matplotlib.pyplot as plt
-
- data = pd.read_csv('C:/爬虫/河源旅游景点.csv') # 读取景区价格数据
- x_arr = data['景区'] # x轴数据,景区名称
- y_arr = data['销量'] # y轴数据,景区价格
- colors = ['green', 'blue', 'red', 'orange', 'purple', 'pink', 'yellow', 'red', 'brown', 'turquoise', 'magenta', 'lavender', 'beige', 'teal','gold','navy']
- plt.figure(figsize=(20, 13)) # 指定图形大小为(10, 6)
- plt.bar(x_arr, y_arr, color=colors[:len(x_arr)])
- plt.xlabel(u'') # x轴描述信息
- plt.ylabel(u'销售量') # y轴描述信息
- plt.title(u'销售量柱状图') # 指定图表描述信息
- plt.ylim(0, 200) # 指定Y轴的高度
- plt.savefig('销售量柱状图') # 保存为图片
- plt.show()
将他们景区名称和价格做成饼图,可以通过下面饼图可以看出客天下恐龙丛林乐园价格是最高的,消费最低的是龟峰塔,所以一般旅游你们去哪里,还要考虑消费。
- import matplotlib.pyplot as plt
-
- data = pd.read_csv('C:/爬虫/河源旅游景点.csv') # 读取景区价格数据
- x_arr = data['景区'] # x轴数据,景区名称
- y_arr = data['价格'] # y轴数据,景区价格
- colors = ['green', 'blue', 'red', 'orange', 'purple', 'gray', 'pink', 'yellow', 'black', 'white', 'brown', 'turquoise', 'magenta', 'lavender', 'beige', 'teal']
-
- plt.figure(figsize=(8, 8)) # 指定图形大小为(8, 8)
- plt.pie(y_arr, labels=x_arr, colors=colors[:len(x_arr)], autopct='%1.1f%%') # 生成饼图
- plt.title(u'销售量饼图') # 指定图表描述信息
- plt.legend(x_arr, loc='best') # 添加图例
- plt.savefig('销售量饼图') # 保存为图片
- plt.show()
近年来,随着互联网的发展,越来越多的人选择通过网络来获取旅游景点的相关信息。Python作为一种强大的编程语言,可以帮助我们快速高效地爬取旅游景点的数据,为我们提供更全面的了解。
在爬取旅游景点数据时,我们可以通过抓取各大旅游网站上的热度排行榜来获取每个景点的热度信息。这些排行榜通常会根据用户的浏览量、点赞量等数据来进行排名,可以很好地反映出一个景点的受欢迎程度。通过Python的爬虫技术,我们可以自动抓取这些数据,并将其整理成一个方便查看的列表或图表。
另外,消费价格也是选择旅游景点时需要考虑的重要因素之一。Python爬虫可以帮助我们获取各个景点的门票价格、酒店住宿费用以及周边美食等消费信息。通过对这些数据的整理和分析,我们可以对各个景点的消费水平有一个大致的了解,从而更好地规划旅行预算。
综上所述,通过Python爬取旅游景点数据可以为我们提供更全面、准确的信息,帮助我们更好地选择旅游目的地。无论是查看热度排行榜还是了解消费价格,Python爬虫都能够为我们提供有力的支持,让我们的旅行更加顺利和愉快。
本篇爬虫文章就到这吧,期待博主下一篇文章
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。