1. import requests
    2. from lxml import etree
    3. import json
    4. import openpyxl
    5. url = "https://voice.baidu.com/act/newpneumonia/newpneumonia"
    6. response = requests.get(url)
    7. # print(response.text)
    8. # 生成HTML对象
    9. html = etree.HTML(response.text)
    10. result = html.xpath('//script[@type="application/json"]/text()')
    11. result = result[0]
    12. # json.load()方法可以将字符串转化为python数据类型
    13. result = json.loads(result)
    14. # 创建工作簿
    15. wb = openpyxl.Workbook()
    16. # 创建工作表
    17. ws = wb.active
    18. ws.title = "国内疫情"
    19. ws.append(['省份', '累计确诊', '死亡', '治愈', '现有确诊', '累计确诊增量', '死亡增量', '治愈增量', '现有确诊增量'])
    20. result_in = result['component'][0]['caseList']
    21. data_out = result['component'][0]['globalList']
    22. '''
    23. area --> 大多为省份
    24. city --> 城市
    25. confirmed --> 累计
    26. crued --> 值域
    27. relativeTime -->
    28. confirmedRelative --> 累计的增量
    29. curedRelative --> 值域的增量
    30. curConfirm --> 现有确镇
    31. curConfirmRelative --> 现有确镇的增量
    32. '''
    33. for each in result_in:
    34. temp_list = [each['area'], each['confirmed'], each['died'], each['crued'], each['curConfirm'],
    35. each['confirmedRelative'], each['diedRelative'], each['curedRelative'],
    36. each['curConfirmRelative']]
    37. for i in range(len(temp_list)):
    38. if temp_list[i] == '':
    39. temp_list[i] = '0'
    40. ws.append(temp_list)
    41. # 获取国外疫情数据
    42. for each in data_out:
    43. sheet_title = each['area']
    44. # 创建一个新的工作表
    45. ws_out = wb.create_sheet(sheet_title)
    46. ws_out.append(['国家', '累计确诊', '死亡', '治愈', '现有确诊', '累计确诊增量'])
    47. for country in each['subList']:
    48. list_temp = [country['country'], country['confirmed'], country['died'], country['crued'],
    49. country['curConfirm'], country['confirmedRelative']]
    50. for i in range(len(list_temp)):
    51. if list_temp[i] == '':
    52. list_temp[i] = '0'
    53. ws_out.append(list_temp)
    54. wb.save('./data.xlsx')