鱼C论坛

 找回密码
 立即注册
查看: 1892|回复: 2

[技术交流] 微博疫情数据爬取

[复制链接]
发表于 2020-4-1 15:18:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import requests
  2. import xlwt

  3. def get_json():
  4.     url = "https://interface.sina.cn/news/wap/fymap2020_data.d.json"
  5.     headers = {
  6.         'cookie': 'Apache=2885827998838.657.1585714305110; SINAGLOBAL=2885827998838.657.1585714305110; ULV=1585714305112:1:1:1:2885827998838.657.1585714305110:; NCP-SINA-CN=; genTime=1585715444; statuid=__10.41.1.25_1585715444_0.40395200; statuidsrc=Mozilla%2F5.0+%28Linux%3B+Android+10%3B+VOG-AL00+Build%2FHUAWEIVOG-AL00%3B+wv%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Version%2F4.0+Chrome%2F74.0.3729.186+Mobile+Safari%2F537.36%3B+HUAWEI-VOG-AL00__sinanews__7.33.5__android__10__525%3B+hybrid__0.8__online%6010.41.1.25%60http%3A%2F%2Finterface.sina.cn%2Fnews%2Fwap%2Ffyzt_newsv2.d.json%3Fcallback%3D_aLocalNewsFunction%26_%3D1585715443935%26type%3Dprovince%26code%3Dhenan%26page%3D1%60%60__10.41.1.25_1585715444_0.40395200; ustat=__10.41.1.25_1585715444_0.40395200; historyRecord={"href":"https://news.sina.cn/zt_d/yiqing0121","refer":"https://cn.bing.com/"}; vt=4',
  7.         'referer': 'https://news.sina.cn/zt_d/yiqing0121',
  8.         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Edg/80.0.361.69',
  9.     }
  10.     try:
  11.         response = requests.get(url, headers=headers)
  12.         if response.content:
  13.             return response.json()
  14.         else:
  15.             return None
  16.     except requests.ConnectionError:
  17.         return "连接网页失败"

  18. def get_data(json):
  19.     data= json['data']['list']
  20.     #['data']['list'][0]['city']
  21.     for item in data:
  22.         for city in item['city']:
  23.             cit = city['name']
  24.             conNum = city['conNum']#累计确诊病例
  25.             cureNum = city['cureNum']#治愈
  26.             deathNum = city['deathNum']#死亡
  27.             if cit != '境外输入人员':
  28.                 yield {
  29.                     'city':cit,
  30.                     'conNum':conNum,
  31.                     'cureNum':cureNum,
  32.                     'deathNum':deathNum,
  33.                 }

  34.     return data

  35. def save_data(data):
  36.     myxls = xlwt.Workbook()
  37.     sheet1 = myxls.add_sheet(u'20200401', cell_overwrite_ok=True)
  38.     sheet1.write(0, 0, "FID")
  39.     sheet1.write(0, 1, "city")
  40.     sheet1.write(0, 2, "conNum")
  41.     sheet1.write(0, 3, "cureNum")
  42.     sheet1.write(0, 4, "deathNum")
  43.     i = 1
  44.     for item in data:
  45.         sheet1.write(i, 0, i)
  46.         sheet1.write(i, 1, item['city'])
  47.         sheet1.write(i, 2, item['conNum'])
  48.         sheet1.write(i, 3, item['cureNum'])
  49.         sheet1.write(i, 4, item['deathNum'])
  50.         i = i + 1
  51.     myxls.save('疫情0401.xls')


  52. if __name__ == '__main__':
  53.     json = get_json()
  54.     data = get_data(json)
  55.     save_data(data)
  56.     for item in data:
  57.         print(item)
复制代码



爬虫小白 由于作业要用到这些数据 所以做了下
然后给大家分享一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-2 21:15:47 | 显示全部楼层
厉害
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-9 08:20:42 | 显示全部楼层
牛啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 23:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表