python爬取每日腾讯新闻数据

前言: 2020年这个新年开端真的很心酸,虽然过上了可以心安理得躺在床上的日子,但也渐觉这样的生活缺少了激情,缺少了人生应有的模样,辜负了时光。。。虽然极想给2020按下个重启键,但时光这台主机它不愿意呀…!只待春暖花开,你我再畅玩这美好世界。

上一段时间我一直在学习机器学习方面的知识,开始想用C++去实现机器学习中的相关算法,但总觉不易,所以借着可以躺在家的一个月,系统学习了Python。应用学习到的知识,爬取了腾讯新闻每日发布的guanzhuang数据,这既是对我学习的一个实践,也是对这场battle的一丢丢贡献。因为还是初识Python,所以,代码若有写的不好的地方,或者可以改善的地方,可以留下你的评论哈~~

代码比较简单,直接上代码

import requests
import json
import pandas as pd
import os
import tkinter as tk
import time# 爬取源数据地址"https://news.qq.com/zt2020/page/feiyan.htm"(腾讯新闻)
# 分析网页的Network后,发现需要的数据在这个url中请求
url = "https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"#  修改头,让浏览器不发觉是代码在下载数据
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'
}# 数据存储结构
nCovDataColumns = ['名称', '新增确诊', '累积确诊', '死亡', '死亡率', '治愈', '治愈率']
df_nCovData = pd.DataFrame(columns=nCovDataColumns)# 创建并打开交互窗口
root = tk.Tk()
root.title('2019-nCovDataCrawl')
root.iconbitmap('icon.ico')
processLabel = tk.Label(root, text='', fg='RED', padx=10, pady=10)def open_win():group1 = tk.LabelFrame(root, text='程序说明', padx=5, pady=5)group1.pack(padx=10, pady=10)dataInfo = tk.Label(group1, text='该程序用于爬取腾讯发布的...导致的人员伤亡数据,''\n数据存储于epidemicData文件夹下的excel文件,以爬取的数据发布时间命名,''\n具体包括字段为:名称,新增确诊,累积确诊,死亡,死亡率,治愈,治愈率,\n''数据包括省,以及其下的市级数据,省级数据行下紧跟市级数据行\n''【单次爬取数据】用于手动爬取操作,【自动爬取数据】用于自动每半小时爬取一次数据\n''收集该数据只为方便他人研究,为这场抗"疫"战做一份贡献,欢迎使用本程序获取研究数据!')dataInfo.pack()frame1 = tk.Frame(root)frame1.pack(side=tk.RIGHT)btnCrawl_Click = tk.Button(frame1, text='单次爬取数据', command=crawl_data)btnCrawl_Click.pack(side=tk.LEFT, padx=10, pady=10)btnCrawl_Auto = tk.Button(frame1, text='自动爬取数据', command=timeWork)btnCrawl_Auto.pack(side=tk.LEFT, padx=10, pady=10)btnCancel = tk.Button(frame1, text='关闭', command=root.quit)btnCancel.pack(side=tk.RIGHT, padx=10, pady=10)root.mainloop()# 打开url,返回json格式的数据
def open_url():r = requests.get(url, headers=headers)jsonData = r.json()return json.loads(jsonData['data'])# 获取数据更新的时间,用于将不同更新时间的数据都爬取下来
def getUpdataTime(jsonData):lastUpdateTime = jsonData['lastUpdateTime']return lastUpdateTime'''
jsonData数据说明 :
today:{confirm---新增确诊}total:{confirm---累积确诊,dead--死亡,deadRate死亡率,heal---治愈,healRate---治愈率}'''# 获取数据字典
def getDataDic(jsonData):name = jsonData['name']confirm = jsonData['today']['confirm']accu_confirm = jsonData['total']['confirm']dead = jsonData['total']['dead']deadRate = jsonData['total']['deadRate']heal = jsonData['total']['heal']healRate = jsonData['total']['healRate']jsonData_dict = {'名称': name, '新增确诊': confirm, '累积确诊': accu_confirm,'死亡': dead, '死亡率': deadRate, '治愈': heal, '治愈率': healRate}return jsonData_dict#  获取疫情数据
def getEpidemicData(jsonData):areaTree = jsonData['areaTree']for item in areaTree:if item['name'] == '中国':df_nCovData.loc[len(df_nCovData)] = getDataDic(item)item_1 = item['children']for item_2 in item_1:df_nCovData.loc[len(df_nCovData)] = getDataDic(item_2)item_3 = item_2['children']for item_4 in item_3:df_nCovData.loc[len(df_nCovData)] = getDataDic(item_4)return df_nCovData#  保存数据
def saveData(dataFrame, fileName, dirPath='epidemicData', ):createDir(dirPath)listTime = (fileName.split(' ')[1]).split(':')cur_fileName = fileName.split(' ')[0] + ' ' + listTime[0] + '时' + listTime[1] + '分' + listTime[2] + '秒' + '.xlsx'if (os.path.exists(dirPath + '\\' + cur_fileName)):print('数据已经存在!')processLabel['text'] = "数据已经存在!"else:dataFrame.to_excel(dirPath + '\\' + cur_fileName)print('\n数据爬取完成!')processLabel['text'] = "数据爬取完成!"#  创建文件夹
def createDir(dirPath):if not os.path.exists(dirPath):os.mkdir(dirPath)#  爬取数据
def crawl_data():print('数据爬取开始!')processLabel.pack()# 打开网页jsonData = open_url()# 获取数据更新时间updataTime = getUpdataTime(jsonData)# 获取疫情数据,用pandas的数据框架保存dataFrame = getEpidemicData(jsonData)# 保存数据saveData(dataFrame, updataTime)#  定时执行任务
def timeWork(interval=60 * 30):while True:crawl_data()print("开始定时爬取")root.iconify()  # 最小化窗口time.sleep(interval)if __name__ == "__main__":open_win()

运行效果如下图

爬取数据为excel格式,如下图

python爬取每日腾讯新闻数据相关推荐

  1. Python爬虫系列之爬取微信公众号新闻数据

    Python爬虫系列之爬取微信公众号新闻数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流 ...

  2. 如何使用python编程抢京东优惠券 知乎_学好Python爬取京东知乎价值数据

    原标题:学好Python爬取京东知乎价值数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这 ...

  3. 练习:使用Python爬取COVID-19疫情国内当日数据

    练习:使用Python爬取COVID-19疫情国内当日数据 推荐公众号:数据酷客 (里面有超详细的教程) 代码来源数据酷客公众号教程 URL它是Uniform Resource Locator的缩写, ...

  4. python爬取股票信息_利用Python爬取网易上证所有股票数据(代码

    利用Python爬取网易上证所有股票数据(代码 发布时间:2018-04-14 17:30, 浏览次数:1261 , 标签: Python import urllib.request import r ...

  5. python如何爬取实时人流量_使用python爬取微信宜出行人流量数据

    代码地址:https://liujiao111.github.io/2019/06/18/easygo/ 工具介绍: 该工具基于微信中的宜出行提供的数据接口进行爬取,能够爬取一定范围内的当前时间点的人 ...

  6. 使用python爬取BOSS直聘岗位数据并做可视化(Boss直聘对网页做了一些修改,现在的代码已经不能用了)

    使用python爬取BOSS直聘岗位数据并做可视化 结果展示 首页 岗位信息 岗位详情 薪资表 学历需求 公司排名 岗位关键词 福利关键词 代码展示 爬虫代码 一.导入库 二.爬取数据 1.爬取数据代 ...

  7. python爬取火车票网的时刻表数据

    python爬取火车票网的时刻表数据 导包 import re,requests,datetime,time,json from prettytable import PrettyTable from ...

  8. 通过爬取天猫商品评论实例分析Python爬取ajax动态生成的数据

    本文主要通过爬取天猫商品kindle的评论为例来说明利用python爬取ajax动态生成的数据的方式,本文使用的工具如下: 工具 chrome浏览器[寻找评论的动态链接] python3.5[执行代码 ...

  9. python 爬取自如租房的租房数据,使用图像识别获取价格信息

    python 爬取自如租房的租房数据 完整代码下载:https://github.com/tanjunchen/SpiderProject/tree/master/ziru #!/usr/bin/py ...

  10. 使用Python爬取51job招聘网的数据

    使用Python爬取51job招聘网的数据 进行网站分析 获取职位信息 存储信息 最终代码 进行网站分析 进入https://www.51job.com/这个网站 我在这就以python为例搜索职位跳 ...

最新文章

  1. mysql 时间点_MySQL 基于时间点与位置恢复
  2. JAVA实现判断树的子结构及树的镜像问题(《剑指offer》)
  3. Nginx面试中最常见的18道题及答案
  4. c++成员变量与构造函数
  5. android 软件盘弹回去的最好体验,Android 软键盘弹出 日常填坑
  6. vue django mysql_django2 rest_framework + vue.js + mysql5.6 实现增删改查
  7. php函数用竖线隔开,用指定的分隔符号把字符串转换成数组《 PHP 基础 》
  8. Python实例讲解 -- 接收邮件 (亲测)
  9. SpringMVCDemo中,遇到的问题(一)
  10. 启动白屏处理_App启动优化一顿操作猛如虎
  11. 云存储网关 > 常见问题 > 文件网关 > 文件网关的缓存有什么作用
  12. python机器学习库keras——线性回归、逻辑回归、一般逻辑回归
  13. Android APK系列5-------修改APK中的内容
  14. LightGBM 二元分类、多类分类、 Python的回归和分类器应用
  15. AR工业应用|企业中使用的7个增强现实创新案例|effiarAR工业云平台
  16. 微信小程序tabBar边框加|上阴影
  17. 源支付源码三网免挂带云端协议源码搭建
  18. 串口DMA方式发送接收
  19. L1-6 斯德哥尔摩火车上的题
  20. 品诺——浪漫的意大利之夜

热门文章

  1. GNU开发工具——GNU Binutils快速入门
  2. qq出示测试软件语音聊天,QQ语音时语音测试时可以听到声音,播放测试语音时听不到,也听不到好友发来的语音,请问怎么处理...
  3. struts2系列-Real-BUUCTF平台
  4. 18. C语言 -- 指针数组和数组指针
  5. 如何在word中的图片上画圈标注_word图片上画圈 如何在word图片中进行画圈标示...
  6. 【数字信号处理】基本序列 ( 复指数序列 | 单位复指数序列 | 复变函数欧拉公式 )
  7. 在oracle中bpa是什么意思,BPA是什么意思_BPA的翻译_音标_读音_用法_例句_爱词霸在线词典...
  8. python事件是什么意思_python 回调函数是什么意思
  9. Vue 使用Excel表格导入导出
  10. 干货分享:如何把APP软文推广做到好