拉了盏灯 发表于 2020-2-18 11:54:42

爬取新冠肺炎疫情最新情况的爬虫

大家好,今天闲来无事,就想刷刷疫情情况,就自己做了个可以查询到市的爬虫,{:10_279:}{:10_279:}{:10_279:}
疫情期间,大家可以光明正大的宅在家里做贡献了,{:10_256:}

代码只用了requests和json库:
**** Hidden Message *****

Sungne_jer 发表于 2020-2-18 12:36:41

非常好,已收藏!

烟肖雨晨 发表于 2020-2-19 15:19:28

本帖最后由 烟肖雨晨 于 2020-2-19 15:26 编辑

呼叫作者{:5_108:}呼叫作者!
本人萌新发现了一个能更好完善的地方{:10_257:}:
按理来说,如果用户查询了一些特定的省级行政区(例如香港,没有市级行政区,即r['cities']==[]),那么这个时候输入Y(yes)是正常显示的,则提示不支持查看下辖区情况;但是如果这个时候输入N(no)是一点小问题的。用户输入了不查看,但是不支持查看下辖区情况还是会提示给用户。(31——35行代码,即那个判断语句)
if a == 'Y' or a == 'y' and r['cities'] != []:
    for i in r['cities']:
      print('%s累计确诊病例%d例,现有确诊%d例,现有疑似患者%d例,\n累计治愈出院%d例,累计死亡病例%d例。\n====================================' % ((i['cityName']+'市',)+get_info(i)))
elif r['cities'] == []:#如果用户选择不查询香港下面的市级行政区(香港是没有下辖区的),那么上面那个判断语句没有全部满足条件,就来到了此处。来到此处后马上又满足了条件,所以即使用户输入不查询这条提示也会跳出来
    print('抱歉,该省份暂不支持查看下辖区情况。')

用户在不需要进行查询下辖区的情况下,不应提示给用户不支持查看,应该照常回到那个循环中。所以我认为这个判断语句可以这样改:

if a == 'Y' or a == 'y':#分离了那一条长的判断语句,可以保证n则重新循环;y则进入如下判断
    if r['cities'] != []:#如果用户既想查看,又能查找到,就进行输出
      for i in r['cities']:
            print('%s累计确诊病例%d例,现有确诊%d例,现有疑似患者%d例,\n累计治愈出院%d例,累计死亡病例%d例。\n====================================' % ((i['cityName']+'市',)+get_info(i)))
    else:#如果用户想查看,但不能查找到,这时才提示用户
      print('抱歉,该省份暂不支持查看下辖区情况。')
作者的这个爬虫写得很好,已收藏学习。本人的观点可能有不足之处,敬请批评指正{:10_281:}

_2_ 发表于 2020-2-19 17:57:06

能告诉我怎么在手机上运行的吗?

拉了盏灯 发表于 2020-2-20 20:53:01

_2_ 发表于 2020-2-19 17:57
能告诉我怎么在手机上运行的吗?

下载pydroid 3 和一个数据包,就可以了,

拉了盏灯 发表于 2020-2-20 21:26:26

烟肖雨晨 发表于 2020-2-19 15:19
呼叫作者呼叫作者!
本人萌新发现了一个能更好完善的地方:
按理来说,如果用户查询 ...

多谢指正,都没有消息通知,现在才看到,{:10_256:}
你的意见挺不错,我的解决方案是,
在输入了NO后,直接结束函数,

                if a == 'Y' or a == 'y' and r['cities'] != []:
                        for i in r['cities']:
                                print('%s累计确诊病例%d例,现有确诊%d例,现有疑似患者%d例,\n累计治愈出院%d例,累计死亡病例%d例。\n====================================' % ((i['cityName']+'市',)+get_info(i)))
                elif a=='n' or a=='N':
                        return
                print('抱歉,该省份暂不支持查看下辖区情况。')

这样就可以解决了{:10_279:}

烟肖雨晨 发表于 2020-2-22 12:22:43

拉了盏灯 发表于 2020-2-20 21:26
多谢指正,都没有消息通知,现在才看到,
你的意见挺不错,我的解决方案是,
在输入了NO后, ...

代码很简洁,不愧是大佬{:10_254:}

简ai 发表于 2020-3-23 11:28:27

Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/python练习/爬取新冠肺炎疫情最新情况.py", line 71, in <module>
    main()
File "C:/Users/Administrator/Desktop/python练习/爬取新冠肺炎疫情最新情况.py", line 56, in main
    r['confirmedIncr'],
KeyError: 'confirmedIncr'

Process finished with exit code 1


为什么我现在运行会报错,之前运行都是对的
页: [1]
查看完整版本: 爬取新冠肺炎疫情最新情况的爬虫