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

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

首先整合前四个平台上的数据(大河票务、飞猪、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').text
                            if 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})

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值