python爬取每日腾讯新闻数据
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爬取每日腾讯新闻数据相关推荐
- Python爬虫系列之爬取微信公众号新闻数据
Python爬虫系列之爬取微信公众号新闻数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流 ...
- 如何使用python编程抢京东优惠券 知乎_学好Python爬取京东知乎价值数据
原标题:学好Python爬取京东知乎价值数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这 ...
- 练习:使用Python爬取COVID-19疫情国内当日数据
练习:使用Python爬取COVID-19疫情国内当日数据 推荐公众号:数据酷客 (里面有超详细的教程) 代码来源数据酷客公众号教程 URL它是Uniform Resource Locator的缩写, ...
- python爬取股票信息_利用Python爬取网易上证所有股票数据(代码
利用Python爬取网易上证所有股票数据(代码 发布时间:2018-04-14 17:30, 浏览次数:1261 , 标签: Python import urllib.request import r ...
- python如何爬取实时人流量_使用python爬取微信宜出行人流量数据
代码地址:https://liujiao111.github.io/2019/06/18/easygo/ 工具介绍: 该工具基于微信中的宜出行提供的数据接口进行爬取,能够爬取一定范围内的当前时间点的人 ...
- 使用python爬取BOSS直聘岗位数据并做可视化(Boss直聘对网页做了一些修改,现在的代码已经不能用了)
使用python爬取BOSS直聘岗位数据并做可视化 结果展示 首页 岗位信息 岗位详情 薪资表 学历需求 公司排名 岗位关键词 福利关键词 代码展示 爬虫代码 一.导入库 二.爬取数据 1.爬取数据代 ...
- python爬取火车票网的时刻表数据
python爬取火车票网的时刻表数据 导包 import re,requests,datetime,time,json from prettytable import PrettyTable from ...
- 通过爬取天猫商品评论实例分析Python爬取ajax动态生成的数据
本文主要通过爬取天猫商品kindle的评论为例来说明利用python爬取ajax动态生成的数据的方式,本文使用的工具如下: 工具 chrome浏览器[寻找评论的动态链接] python3.5[执行代码 ...
- python 爬取自如租房的租房数据,使用图像识别获取价格信息
python 爬取自如租房的租房数据 完整代码下载:https://github.com/tanjunchen/SpiderProject/tree/master/ziru #!/usr/bin/py ...
- 使用Python爬取51job招聘网的数据
使用Python爬取51job招聘网的数据 进行网站分析 获取职位信息 存储信息 最终代码 进行网站分析 进入https://www.51job.com/这个网站 我在这就以python为例搜索职位跳 ...
最新文章
- mysql 时间点_MySQL 基于时间点与位置恢复
- JAVA实现判断树的子结构及树的镜像问题(《剑指offer》)
- Nginx面试中最常见的18道题及答案
- c++成员变量与构造函数
- android 软件盘弹回去的最好体验,Android 软键盘弹出 日常填坑
- vue django mysql_django2 rest_framework + vue.js + mysql5.6 实现增删改查
- php函数用竖线隔开,用指定的分隔符号把字符串转换成数组《 PHP 基础 》
- Python实例讲解 -- 接收邮件 (亲测)
- SpringMVCDemo中,遇到的问题(一)
- 启动白屏处理_App启动优化一顿操作猛如虎
- 云存储网关 > 常见问题 > 文件网关 > 文件网关的缓存有什么作用
- python机器学习库keras——线性回归、逻辑回归、一般逻辑回归
- Android APK系列5-------修改APK中的内容
- LightGBM 二元分类、多类分类、 Python的回归和分类器应用
- AR工业应用|企业中使用的7个增强现实创新案例|effiarAR工业云平台
- 微信小程序tabBar边框加|上阴影
- 源支付源码三网免挂带云端协议源码搭建
- 串口DMA方式发送接收
- L1-6 斯德哥尔摩火车上的题
- 品诺——浪漫的意大利之夜
热门文章
- GNU开发工具——GNU Binutils快速入门
- qq出示测试软件语音聊天,QQ语音时语音测试时可以听到声音,播放测试语音时听不到,也听不到好友发来的语音,请问怎么处理...
- struts2系列-Real-BUUCTF平台
- 18. C语言 -- 指针数组和数组指针
- 如何在word中的图片上画圈标注_word图片上画圈 如何在word图片中进行画圈标示...
- 【数字信号处理】基本序列 ( 复指数序列 | 单位复指数序列 | 复变函数欧拉公式 )
- 在oracle中bpa是什么意思,BPA是什么意思_BPA的翻译_音标_读音_用法_例句_爱词霸在线词典...
- python事件是什么意思_python 回调函数是什么意思
- Vue 使用Excel表格导入导出
- 干货分享:如何把APP软文推广做到好