一.选题背景
随着旅游业的快速发展,越来越多的人选择通过互联网平台预订旅行产品,其中携程网作为国内领先的在线旅行服务提供商,拥有大量的旅游产品和用户数据。利用爬虫技术可以获取携程网上各个景点的游客数据,包括游客数量、游客来源地、游客年龄段、游客满意度等信息。通过分析这些数据,可以为景点的管理者提供客流量预测、市场分析、产品改进等方面的参考,也可以为旅游从业者提供市场营销、产品开发等方面的参考。因此,选题背景是基于爬虫技术获取携程网景点游客数据,分析这些数据对于旅游行业和景点管理的意义,为旅游行业的发展和景点的管理提供参考。
二.主题式网络爬虫设计方案
数据来源:三亚亚龙湾热带天堂森林公园游玩攻略简介,三亚亚龙湾热带天堂森林公园门票/地址/图片/开放时间/照片/门票价格【携程攻略】 (ctrip.com)
1.名称:携程旅行景点游客数据分析与可视化
2.爬取的数据内容:携程网旅游景点的用户评论内容、评论IP属地
3.爬虫设计方案概述:本次案例使用request对携程网景点页面进行爬取,使用xlutils对excel文件进行处理,之后使用pandas、pyecharts、jieba对数据进行可视化
4.技术难点:携程网上的景点数据庞大,需要爬虫技术能够高效地获取和处理大量数据,同时要考虑到数据更新的频率和实时性,也要预防访问检测。
三.主题式页面结构分析
1.页面结构
(1)搜索栏、导航栏位于页面顶部
(2)评论区位置包裹于页面中间部分(要爬取的部分)
(3)页面底部显示其它信息
2.页面结构解析
(1)<div id = "commentModule">评论区整体位置
(2)<div class="commentList">评论区内容列表
(3)<div class = "contentInfo">评论区评论信息元素
节点(标签)查找方法与遍历方法
for循环迭代遍历
四.网络爬虫设计
1.爬取到的数据
2.代码实现
将爬虫方法封装为类Spider_XieCheng,在对爬取到的数据进行逐条解析时顺便进行数据清洗
get_data方法:设置请求头以及规则和cookie,发起请求,获取响应数据
analyze_data方法:对传入的数据进行逐条解析,把IP属地的空值和特殊地区进行处理(提前进行数据清洗以方便后面数据可视化绘制地图)
save_excel方法:将传入的数据存储到excel
1 import requests 2 import xlrd, xlwt, os 3 from xlutils.copy import copy 4 import time 5 6 class Spider_XieCheng(object): 7 def __init__(self): 8 self.data_id = 0 9 10 #发起请求获取响应数据 11 def get_data(self): 12 pages = 100 # 页数设置(一页10个游客) 13 for page in range(1, int(pages) + 1): 14 url = 'https://m.ctrip.com/restapi/soa2/13444/json/getCommentCollapseList' 15 cookies = { 16 'MKT_CKID': '1701184519791.j1nes.9ll0', 17 'GUID': '09031019117090895670', 18 '_RSG': 'B2KZgmdz1O8o4Y4R.sklxB', 19 '_RDG': '28e94143a9de482aae2e935bd882f5ef15', 20 '_RGUID': '8601f67c-2a8d-408b-beef-bb6f9b122132', 21 '_bfaStatusPVSend': '1', 22 'UBT_VID': '1701184519782.37bb85', 23 'MKT_Pagesource': 'PC', 24 'nfes_isSupportWebP': '1', 25 '_ubtstatus': '%7B%22vid%22%3A%221701184519782.37bb85%22%2C%22sid%22%3A2%2C%22pvid%22%3A3%2C%22pid%22%3A600002501%7D', 26 '_bfaStatus': 'success', 27 'ibulanguage': 'CN', 28 'ibulocale': 'zh_cn', 29 'cookiePricesDisplayed': 'CNY', 30 'cticket': '0CDDE357337AEC6A065861D35A34D9162AA75BCB8063AE80366ACD8D40269DA2', 31 'login_type': '0', 32 'login_uid': 'CC94CD2D359B73CD9CC2E002839E204163EA360CBAD672051EAA872D50CC7913', 33 'DUID': 'u=0AE96CC05C93DD44B84C2281D96800D1&v=0', 34 'IsNonUser': 'F', 35 'AHeadUserInfo': 'VipGrade=0&VipGradeName=%C6%D5%CD%A8%BB%E1%D4%B1&UserName=&NoReadMessageCount=0', 36 '_resDomain': 'https%3A%2F%2Fbd-s.tripcdn.cn', 37 '_pd': '%7B%22_o%22%3A6%2C%22s%22%3A11%2C%22_s%22%3A0%7D', 38 '_ga': 'GA1.2.652696142.1702191431', 39 '_gid': 'GA1.2.323708382.1702191431', 40 '_RF1': '2409%3A895e%3Ab451%3A620%3A8c52%3Ad1d7%3Aa25d%3A6909', 41 '_ga_5DVRDQD429': 'GS1.2.1702191431.1.0.1702191431.0.0.0', 42 '_ga_B77BES1Z8Z': 'GS1.2.1702191431.1.0.1702191431.60.0.0', 43 'MKT_CKID_LMT': '1702191445465', 44 'Union': 'OUID=xc&AllianceID=4897&SID=799748&SourceID=&createtime=1702191446&Expires=1702796246013', 45 'MKT_OrderClick': 'ASID=4897799748&AID=4897&CSID=799748&OUID=xc&CT=1702191446014&CURL=https%3A%2F%2Fhotels.ctrip.com%2F%3Fallianceid%3D4897%26sid%3D799748%26ouid%3Dxc%26bd_creative%3D11072932488%26bd_vid%3D7491298425880010041%26keywordid%3D42483860484&VAL={"pc_vid":"1701184519782.37bb85"}', 46 '_jzqco': '%7C%7C%7C%7C1702191484275%7C1.256317328.1701184519797.1702191888543.1702192188644.1702191888543.1702192188644.0.0.0.17.17', 47 '_bfa': '1.1701184519782.37bb85.1.1702191890469.1702192248624.4.7.290510', 48 } 49 headers = { 50 'authority': 'm.ctrip.com', 51 'accept': '*/*', 52 'accept-language': 'zh-CN,zh;q=0.9', 53 'cache-control': 'no-cache', 54 'cookieorigin': 'https://you.ctrip.com', 55 'origin': 'https://you.ctrip.com', 56 'pragma': 'no-cache', 57 'referer': 'https://you.ctrip.com/', 58 'sec-ch-ua': '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"', 59 'sec-ch-ua-mobile': '?0', 60 'sec-ch-ua-platform': '"Windows"', 61 'sec-fetch-dest': 'empty', 62 'sec-fetch-mode':