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

测试与修改
如今项目已经接近尾声,在前后端合并之后难免会出现一些问题,所以这一次主要任务是进行测试与修改。
1.景点图片无法加载,数据返回总是为空问题。
经过测试发现是前端传入参数的城市字段为空,而只传入了名称,所以程序出现错误。
2.提高程序容错能力。
经过测试发现了很多种可能会出现的意外情况,比如爬取门票时某一字段偶尔没有,爬取网站偶尔会出现爬取失败的问题。
解决方法是用try-except包裹已经发现可能出现错误的地方,如果网址爬取失败,则再重新尝试一次,(但为了提高效率,并不会反复多次重新尝试)。
经过多次测试尽可能考虑到所有可能发生的情况,如此用户在使用程序时,就不会因为一些操作导致程序崩溃等问题。
比如在合并多个字典类型的时候常常会用到

dict(**l,**z)

这一方法,但在其中有重复的键值时就会报错,从而导致该数据中其它的数据也无法合并进去,导致数据丢失,所以修改为:

        try:
            allList = dict(**allList, **l)
        except:
            for key, value in l.items():
                allList[key] = value

在数据合并时:

        try:
            spotsInfo.setdefault(info, {})
            k = xc.spotsInfo[info]
            if len(name) == 0:
                spotsInfo[info][xc.name] = xc.spotsInfo[info]
            else:
                spotsInfo[info][name] = spi[info]
                spotsInfo[info][xc.name] = xc.spotsInfo[info]
            xc.spotsInfo.pop(info)
        except Exception as e:
            # print(e)
            if len(name) != 0:
                spotsInfo[info][name] = spi[info]

3.在搜索景点详细信息、美食数据的时候因为城市名称、景点名称有稍微的出入(比如北京与北京市),而导致无法搜索到,所以要使用模糊搜索功能,才能使程序正确返回。

result = process.extractBests(city, list.keys(), score_cutoff=80, limit=1)
info = list[result[0][0]]

这样类似的模糊搜索用到了很多地方:
因为门票搜索的几个平台,输入关键词往往会返回大量符合条件的(甚至一点也不符合条件的),
所以我们在程序中还要进一步筛选(以飞猪为例):

				html = self.getHtml(url + str(p))
                soup = BeautifulSoup(html, "html.parser")
                div = soup.find_all('a', attrs={'data-click-type': 'l_title','class':'name'})
                if len(div) == 0:
                    break
                for s in div:
                    # 景点名称,门票(名称name,类别type,价格price,url,已售buy,旅行社from,可退isReturnable,预定时间bookTime,出票时间outTime,
                    # 可用时间useTime,说明discription)
                    title = s.string
                    result = fuzz.token_sort_ratio(title, keyword)
                    if result <= 20:
                        continue
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值