景点门票数据的整合
至此为止,共爬取了八个平台上门票信息,但信息参差不齐,如果直接这样返回给用户肯定是不可以的,所以现在需要做的就是把八个平台上想要爬取的数据规定一个固定的格式,我这里采用的依然是字典格式,依次按照景点、来源、票的类型来进行分类,把爬到的所有门票进行一个数据的整合。

首先整合前四个平台上的数据(大河票务、飞猪、klook、驴妈妈),格式主要为:

tickets[type].append({'name':ttitle,'type':type,'price':price,'url':href,'buy':'','from':'大河票务网','isReturnable':'','bookTime':booktime,'outTime':'','useTime':'','discription':discription})
 #景点名称,门票(名称name,类别type,价格price,url,已售buy,旅行社from,可退isReturnable,预定时间bookTime,出票时间outTime,
# 可用时间useTime,说明discription)

但是这些数据并不是所有平台都会有的,所以都有一个默认值,字符为空字符串,数字则为0。
因为当初爬取的时候并没有把全部所有想要的数据爬下来,所以这次需要做的就是对网站再做进一步分析,尽可能的把想要的数据爬下来。
以下是驴妈妈网站爬取的改动:

                     price = item.find('dd',{'class':'pdlvprice'}).find('i').string.replace(' ','').replace('\n','').replace('\t','')'''预定描述'''try:booktime = item.find('dd',{'class':'pdAdvbookingTime'}).string.replace(' ','').replace('\n','').replace('\t','')except:booktime = ''title = item.find('dt',{'class':'pdname'}).text.replace(' ','').replace('\n','').replace('\t','')# isreturn = item.find('dt',{'class':'pdname'}).find('span',{'class':'tagsback'})#是否可退# isget = item.find('dt',{'class':'pdname'}).find('span',{'class':'tagsback'})#是否需要取票try:type = item.find('dt',{'class':'pdname'}).find('a')['key'].replace(' ','').replace('\n','').replace('\t','')data = item.find('dt',{'class':'pdname'}).find('a')['data'].replace(' ','').replace('\n','').replace('\t','')except Exception as ex:type = ''data = ''detail_url = 'http://ticket.lvmama.com/scenic_front/scenic/asyncLoadingTicketDetail.do?suppGoodsId='+data+'&branchType=&productId='+productid+'&bizCategoryId=11&key='moreInfo = self.getHtml(detail_url)# print(moreInfo)moresoup = BeautifulSoup(moreInfo,'html.parser')h4 = moresoup.find_all('li')dis = ''isreturn = ''for h in h4:# lis = h.find_all('li')# for li in lis:if h.text.find('退票规则')>=0:isreturn = h.find('i').textif h.text.find('有效期限')>=0:usetime = h.text.replace('有效期限','')dis = moresoup.text.replace('收起','')# print(detail_url)# print(title)'''合并'''slist.setdefault(type,[])slist[type].append({'name':title,'type':type,'price':price,'url':a['href'],'buy':'','from':'驴妈妈','isReturnable':isreturn,'bookTime':booktime,'outTime':'','useTime':usetime,'discription':dis})

像这样对其它三个也进行分析和修改。
剩下的任务就是后四个数据的整合,以及对这八个平台的方法合并,使外部调用时,用一个方法就可以返回所有的数据。

山东大学创新项目实训个人工作日志(十六)相关推荐

  1. 山东大学创新项目实训个人工作日志(一)

    目录 一.百度地图API的接入 二.主要实现的功能 查询景点 计算距离 半正矢公式 一.百度地图API的接入 百度地图API可以为我们提供多种关于地图绘制和计算的功能,因为我们的项目和出行旅游有着很大 ...

  2. 山东大学创新项目实训个人工作日志(十七)

    景点门票数据的整合和组织 主要实现的是景点门票的后四个平台(去哪儿.同程.途牛.携程)的数据的整合. 去哪儿: def search_spots(self, keyword, city):'''查询景 ...

  3. 山东大学创新项目实训个人工作日志(二十三)

    景点图片爬取(改进) 经过测试发现,之前爬到的数据并不是全部的数据,据估计,全国共两千多个城市和地区,数以万计的景点,而之前仅仅是将每个城市的一小部分景点爬了出来,所以现在需要做的就是把所有数据全部爬 ...

  4. 山东大学创新项目实训个人工作日志(二十)

    马蜂窝平台的景点图片爬取 这次完成的是对马蜂窝景点图片爬取的改进,之前是通过地图点来爬取的,但是地图点的数据不全,所以研究之后打算从这一板块重新爬取. 但是这一部分进行翻页时,网页本身是没有任何变化的 ...

  5. 项目实训--Unity多人游戏开发(十六、草丛隐身与道具隐身)

    文章目录 复述所需功能及其概念 进入草丛隐身. 道具技能隐身: 一个问题 实际开发 草丛 道具 总结 复述所需功能及其概念 进入草丛隐身. 像英雄联盟的草丛机制一样. 其中(自己与敌人的可见性)包括如 ...

  6. 山东大学软件学院项目实训-创新实训-SDUMeeting(一)

    山东大学软件学院项目实训-创新实训-SDUMeeting(一) 一.前言: 这个项目是山东大学视频会议项目,这个项目基于webrtc构建多人视频会议系统,我负责视频会议客户端及服务端安全防护,这个专栏 ...

  7. 山东大学软件学院项目实训-创新实训-SDUMeeting(三)

    山东大学软件学院项目实训-创新实训-SDUMeeting(三) 山大会议项目web安全之文件注入防护 一.前言 山大会议的客户端加入了对用户自定义头像的支持,需要用户自行上传头像图片,这个过程存在文件 ...

  8. 山东大学软件学院项目实训-创新实训-SDUMeeting(六)

    山东大学软件学院项目实训-创新实训-SDUMeeting(六) 端对端加密与密钥交换 端到端加密(end-to-end),是一种只有参与通讯的用户可以读取信息的通信系统.它可以防止潜在的窃听者--包括 ...

  9. 山东大学暑期项目实训——云主机服务比价与预测系统

    山东大学暑期项目实训--云主机服务比价与预测系统(十二) 使用tensorflow做预测 一.简单的预测函数值 1.使用训练数据做预测 创建模型: model = keras.Sequential([ ...

最新文章

  1. Zend Guard 各版本下载【破解方法】
  2. 关于SQL Server的若干注意事项
  3. 【IT资讯】编程语言面临重新洗牌,这六种要凉凉
  4. ACM思维题训练 Section A
  5. PHP格式化全国省市区列表
  6. mysql5.7.x 1251_MySql-8.0.x免安装版下载与配置,Navicat打开数据库链接报错1251的解决办法...
  7. 强类型数据集DataSet入门1
  8. 一个大图切成几个小图加载速度更快_谷歌SEO页面速度的重要性
  9. 【原生JS】js小数正则
  10. matlab 6.5 vc6,MATLAB6.5 与 VC6.0混合编程中的 VC6.0的设置
  11. 关于win10系统常用的c盘清理技巧
  12. Python实现Excel和TXT文件格式的转换
  13. 我的软件开发方法论2:复利方法观
  14. 状态机实现的LED交通灯2
  15. 二次开发----在帆软报表设计器上添加自己的按钮
  16. Python画一个中国地图玩玩
  17. java 替换空白字符串
  18. C++——队列应用——显示二项式系数
  19. spring框架使用JavaMailSenderImpl发送邮件
  20. 如何快速掌握一门新的技术

热门文章

  1. STM32 第19讲 IIC(协议简介/读取驱动AT24C02/实验)
  2. eclipse复制粘贴失效copy ctrl+c
  3. 彩虹屁机器人,把想夸的人夸上天
  4. 基于html5的矢量图绘制方法研究,基于HTML5Canvas技术的在线图像处理方法的研究...
  5. 初中毕业男生学计算机专业好吗,初中毕业男生学什么专业好
  6. 电话语音机器人使用心得
  7. 计算机屏幕节电模式,电脑显示屏一打开就显示节电模式,怎么处理
  8. matlab 定义布尔变量,创建自定义布尔约束
  9. QML 信号和信号处理器程序
  10. 使用jQuery实现简单的购物车功能