相关课程与技术:《数据采集与网络爬虫技术》、requests、BeautifulSoup、pymongo等等。

这是我一年前的项目了,今天决定总结出来分享给大家!一起学习啊。


目录

一、项目的目的与意义

二、采集目标确定

三、去哪儿旅游网站分析

四、数据采集流程与步骤说明

五、数据采集实现过程

(1)进入搜索广州门票首页

核心代码展示:

(2)景点详细页面信息获取

核心代码展示:

(3)景点评论评分页面信息获取

核心代码设计展示:

六、数据采集结果说明

七、项目总结与个人心得


一、项目的目的与意义

此次项目主要针对去哪儿旅游网站广州景点门票的数据分析,利用的景点相关信息与用户对景点的评论评分数据进行对比与分析,寻找出适合个人用户游玩的景点。

二、采集目标确定

因此通过对去哪儿旅游网站主页的分析,需要采集两部分的信息:

第一、景点的详细信息:包括景点名称、景点热度、地址、门票价格、门票销量数、景点区域、景点主题;

第二、景点的评论评分:包括评论内容、评论用户ID、评论时间、体验所给的星星级别。

通过分析上述数据可以观察出景点的评价、景点的游玩体验感受情况、景点的热度、用户喜欢度等情况,从而可以根据景点与用户所喜欢的价格、类型等推荐出最好的景点,让用户更方便快捷的去选择与游玩。

三、去哪儿旅游网站分析

本项目主要通过广州景点门票的景点信息及评论数据作为数据采集研究对象。在采集前根据网页的后缀以及网址的特点来进行网页的区分。

首先静态网页主要是以.html、.htm、.html、.shtml、.xml作为后缀的网页。静态网页的内容是固定的,每个页面都是独立的页面不会根据浏览者的不同需求而改变。而动态网页是使用ASP 或PHP 或 JSP 等作为后缀的网页,并且能够自动更新,因事因人而变,交互性较强。动态网页网址中的符号“?”对搜索引擎检索存在一定的问题,需要一定的技术处理才能适应其要求。所以较为容易的判断出去哪儿旅游网站的网页是动态的。如图3-1 网页网址所示。

图3-1 网页网址

景点的详细信息是先放在列表中,然后再存到Excel表格中。而本次项目景点的详细信息我使用requests与BeautifulSoup方法提取景点下的数据。而评论数据则是直接存储到json中,利用pymongo与selenium方法,可以直接通过get方式进行内容提取。如下图3-2方法确定。

图3-2  方法确定

Json格式的层次结构简洁清晰,通常以键值对的形式存储,有利于开发者阅读和编写,同时也易于机器解析和生成,能够有效地提升网络传输效率。在爬虫的过程中,可以在开发者模式返回的网页里找到完整的json格式的数据,这时就可以运用requests包中的json函数将爬取到的原文本转化格式,从而方便提取内容。如景点评论页面中的用户评论数据就是json格式,如下图3-3 评论页面所示。

图3-3  评论数据

四、数据采集流程与步骤说明

图4   数据采集步骤

图片步骤说明:总体来说此次项目的实现步骤就是分析数据,获取信息,即模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或Excel表格中。

核心信息采集主要分为4个步骤:发起请求、获取响应体、解析内容与保存数据。

发起请求:使用http库向目标站点发起请求,即发送一个Request,Request包含:请求头、请求体等,然后利用get方法获取。获取响应内容
如果服务器能正常响应,则会得到一个Response: Response包含:html,json,图片,视频等。
解析内容的话,就是解析html数据:正则表达式,第三方解析库如Beautifulsoup,pyquery等,我利用了Beautifulsoup进行解析。解析json数据:json模块。
保存数据:我运用了Excel表格和数据库来保存。

五、数据采集实现过程

(1)进入搜索广州门票首页

核心代码展示:

browser=webdriver.Chrome()
url='https://piao.qunar.com/'
browser.get(url)
time.sleep(10)
input=browser.find_element_by_css_selector('#searchValue')
input.send_keys('广州')
button=browser.find_element_by_xpath('//*[@id="searchBtn"]')
button.click()
url='https://piao.qunar.com/ticket/list.htm?keyword=%E5%B9%BF%E5%B7%9E&​https://piao.qunar.com/ticket/list.htm?keyword=%E5%B9%BF%E5%B7%9E&region=&from=mps_search_suggestregion=&from=mps_search_suggest'
res=requests.get(url)
res.text

图5-1  进入广州首页爬取结果

图5-2  进入广州首页页面展示

(2)景点详细页面信息获取

图5-3 景点详细信息网页内容

图5-4  景点详细信息页面获取内容

核心代码展示:

 for place in soup.select('.sight_item_detail'):name=place.select('.name')[0].textlevel=place.select('.product_star_level')[0].textlocation=place.select('.address span')[0].text.strip()jiage=place.select('.sight_item_pop em')[0].text.strip()xiaolian=place.select('.hot_num')[0].text.strip()quyu=place.select('.area a')[0].text.strip()zhuti=place.select('.intro')[0].text.strip()movies.append({'景点名':name, '热度':level,  '':location,'价格':jiage,'销量':xiaolian,'区域':quyu,'主题':zhuti})

图5-5  景点详细页面爬取结果

 图5-6  网页路径规律

解析:找寻网页网址url的规律,通过翻页,可以发现在网址的最后page=2,变成page=3。因此可以得出:

 url='https://piao.qunar.com/ticket/list.htm?keyword=%E5%B9%BF%E5%B7%9E&region=&from=mps_search_suggest&page='+str(a)

通过该url进行for循环翻页爬取。

df=pd.DataFrame(movies)  #将列表转换成DataFrame数据框 

图5-7  列表转换

df=pd.DataFrame(movies)#将列表转换成DataFrame数据框
df.head()
df.to_excel('top200.xlsx')#保存为top200.xlsx 

图5-8   Excel表格结果

(3)景点评论评分页面信息获取

由于评论数据是直接存储在json格式中,可以通过get方式直接获取。

图5-9   评论页面获取内容

图5-10   评论信息获取

核心代码设计展示:

for a in alinks:browser2 = webdriver.Chrome()href = a.get_attribute('href')        #获取详细内容页网址  (get_attribute :获取属性值)browser2.get(href)comments = browser2.find_elements_by_css_selector('.mp-comments-item')for comment in comments:
#         print(comment.find_element_by_css_selector('.sight_item_info p').text)view = {'user':comment.find_element_by_css_selector('.mp-comments-usernam').text,'time':comment.find_element_by_css_selector('.mp-comments-time').text,'view':comment.find_element_by_css_selector('.mp-comments-desc').text,}db['zhu']

图14 评论信息爬取结果

六、数据采集结果说明

最初始采集的景点有1125个,每一页15个景点。部分数据如下图所示:

图6-1   景点详细页面信息内容展示

评论数据采集了两个景点的全部信息,第一个景点一共有732页评论,第二个景点一共有16750页,共爬取出了261139条数据。部分数据如下图:

图 6-2    评论页信息展示

七、项目总结与个人心得

这次项目从选择网站到完成,耗费的时间出乎我的意料,毕竟是第一次做项目,但对于个人而言,这是一次综合性的考验与锻炼了。从学习这门课程的时候,其实我就一直有一个想法,尝试做一个项目,本以为可以轻轻松松的完成,可当真正实现去爬取数据的时候才发现,每一个细节的错误,都可能让你原地踏步。尤其是在爬取评论数据的详细信息时,遇到信息爬取不出,每一次的爬取错误也不一样,明明代码又没有出错的情况,真的很让我崩溃,一开始我尝试部分代码运行,它成功了,但当我把这部分代码与其他的,也能运行出来的代码放一起时,却依旧不行,最后,通过不断的查阅资料,换取爬取方法,才解决了这个问题。并且,这个整整花了我两天时间的通宵,真的现实总是残酷的。无论干什么,细心、耐心真的挺重要的,就这次项目来说,到完成,爬取出来的东西可能对别人来说,就挺容易的,而我,真的尽力了,但如果我放弃了,那么不就连这点东西都没了吗,因此,对于自己的成果,我还是挺欣慰的,尤其是拿去给老师看过后得到表扬,真的超级激动与开心。毕竟我努力了,以后我还可以深入学习,爬取更加厉害的数据,做更加厉害的项目。

最后希望小伙伴们看到这篇文章的时候,也不要放弃自己,努力总会有收获的,尝试最重要。

去哪儿旅游网站采集程序的设计与实现相关推荐

  1. [附源码]PHP计算机毕业设计玩得开心旅游网站(程序+LW)

    [附源码]PHP计算机毕业设计玩得开心旅游网站(程序+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: PHP+ Vscode + Mysql5. ...

  2. ssm+Vue计算机毕业设计寻迹边境丹东旅游网站(程序+LW文档)

    ssm+Vue计算机毕业设计寻迹边境丹东旅游网站(程序+LW文档) 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Ecl ...

  3. PHP毕业设计旅游网站,基于PHP旅游网站的开发与设计(含录像)

    基于PHP旅游网站的开发与设计(含录像)(程序代码,数据库,毕业论文25000字) 随着Internet的普及,越来越多的企业建立了自己的WWW网站,电子商务应时而生.本论文主要讨论如何建立一个简单的 ...

  4. [附源码]PHP计算机毕业设计天源旅游网站(程序+LW)

    [附源码]PHP计算机毕业设计天源旅游网站(程序+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: PHP+ Vscode + Mysql5.7 ...

  5. [附源码]PHP计算机毕业设计红色主题旅游网站(程序+LW)

    [附源码]PHP计算机毕业设计红色主题旅游网站(程序+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: PHP+ Vscode + Mysql5. ...

  6. 基于PHP的旅游网站的开发与设计

    目录 第1章 绪论 3 1.1 课题背景 3 1.2 电子商务的发展趋势 3 1.3企业网站的建立及电子商务的意义 4 第2章 电子商务简介 6 2.1 电子商务的来临 6 2.2 电子商务的概念 6 ...

  7. 免费网站采集程序怎么规避百度飓风算法

    网站采集主要是用于提升网站文章被收录,从而获得流量.很多人都在担心一个点,百度飓风算法对于采集站的打击力度也是越来越强了,采集站真的生存不了吗?很多同行网站每天发布几百的文章数据,真的是编辑人员写的吗 ...

  8. 网站采集程序编写技巧

    采集是中国互联网高频操作,如果你不会编程,可以用"火车头"这样的软件,这个软件也是需要学习成本的,可能会有点复杂.程序员来做当然是自己编程,我一般用python写爬虫程序,偶尔用j ...

  9. 如何利用免费网站采集程序打造一个高权重的站

    什么是采集站顾名思义就是通过采集大量的内容数据填充网站从而获得更多的流量,不管任何网站都会面临一个问题,内容的填充 只要有足够的数据才能得到百度更多的收录与展现.对于一个大站来说.肯定都是有源源不断的 ...

最新文章

  1. mysql''和null,mysql中NULL和null的区别
  2. Laravel插件推荐
  3. Java中不一致的操作会扩大规则
  4. Building a RESTful Web Service
  5. Mysql复制-Slave库设置复制延迟
  6. easyui datagrid 动态绑定列
  7. netron神经网络可视化
  8. CODEVS 2102 石子归并 2
  9. java基础总结06-常用api类-时间日期类
  10. windows 2012 抓明文密码方法
  11. 2022年云计算的八大发展趋势,多样化云计算形态成为主流
  12. 【地图服务-nginx代理】
  13. android自定义秒表,Android:一个简单的秒表实现
  14. 网络诊断显示服务器有问题,Win7系统网络诊断提示DNS服务器未响应怎么解决
  15. 那些有趣的网站系列(十二)
  16. 大连北站到大连计算机学校体育馆,大连北站到圣亚海洋世界怎么走
  17. net stop mysql 服务名无效
  18. 群晖消息通知 推送服务器,群晖开启系统信息微信推送服务
  19. Android 10 Settings应用如何去掉一级菜单定时开关机
  20. java ocr文字识别软件_Java文字识别软件-调用百度ocr实现文字识别

热门文章

  1. 日常办公会用到的python模块-新课介绍 | 用Python自动办公,做职场高手
  2. 通过数据表的DataSet输出XML做数据比对
  3. Canvas在页面画出各种图形的方法
  4. KEIL Software Packs 软件包下载地址
  5. 【详解】SPI中的极性CPOL和相位CPHA是什么以及如何设置
  6. [linux运维]1@linux shell中的实用命令
  7. 中国长春西汀市场现状研究分析与发展前景预测报告(2022)
  8. 【花雕体验】18 行空板点亮WS2812B的256位LED硬屏
  9. Linux 的 Parted 指令
  10. 拜伦之女传奇一生:世界第一位计算机程序员