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

完成了对飞猪平台门票数据的爬取。
在观察飞猪官网查询时的变化时,我们可以发现它有一个json格式的数据被送到网页中,而那个数据中包含的就是门票的信息,所以我们需要做的就是获得这一部分数据。

首先是根据关键词检索,获得符合条件的景点的列表,依次爬取他们的详细地址。

        Ncity = city.replace('市', '').replace('县', '').replace('省', '')
        url = 'https://travelsearch.fliggy.com/index.htm?searchType=product&keyword='+Ncity+keyword+'&category=SCENIC&pagenum=1&conditions=dest%3A'+Ncity
        p = 1;
        try:
            html = self.getHtml(url)
            soup = BeautifulSoup(html,"html.parser")
            '''获得景点列表'''
            scenics = soup.find_all('a',{'href':re.compile(r'https://s.fliggy.com/scenic/')})
            list = set()
            for scenic in scenics:
                list.add(scenic['href'])

然后依次访问详细地址,截取出那一部分json格式的数据来,因为是在源码中,所以采用的是re正则表达式的方式进行匹配和截取:

            for scenic in list:
                detail = self.getHtml(scenic)
                detail_soup = BeautifulSoup(detail,"html.parser")
                title = detail_soup.find('h3',{'class':'scenic-tit'}).text.replace(' ','').replace('\n','')
                ticketList = {}
                # print(title)
                scripts = detail_soup.find_all('script')
                for script in scripts:
                    text = script.string
                    if text is None:
                        continue
                    text = text.replace(' ', '').replace('\n', '')
                    if( text.find('window.TICKETS') != -1 ):
                        '''获取json格式的数据'''
                        text = text[text.find('window.TICKETS') + 15:]
                        tickets = json.loads(text)

这样就获得那一部分json数据了,剩下的工作就是找到它的组织结构,通过键值访问到我们想要的数据:

                                        for item in itemList:
                                            #景点名称,门票(名称name,类别type,价格price,url,已售buy,旅行社from,可退isReturnable,预定时间bookTime,出票时间outTime,
                                            # 可用时间useTime,说明discription)
                                            '''名称'''
                                            ttitle = item['title']
                                            '''已售'''
                                            buy = item['soldNum']
                                            '''类型'''
                                            type = item['tcatName']
                                            '''门票ID'''
                                            itemid = item['itemid']
                                            '''退款政策'''
                                            try:
                                                isreturn = item['refund']
                                            except:
                                                isreturn = ''
                                            '''来源'''
                                            fromw = '飞猪 '+item['sellerName']
                                            '''价格'''
                                            price = item['price']
                                            '''描述'''
                                            dis = item['refundDesc']
                                            fea = item['featureShow']

如此,它的门票数据就爬取成功了。

剩下还需爬取的网站有驴妈妈、大河等网站,在爬取完所有的数据之后,剩下的工作就是规定数据该以怎么样一种格式返回给前端,并且对每个平台的代码进行修改。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值