效果图:

GitHub项目原码

第一步肯定是先获取数据

(现成的接口的要钱啊,就算免费也限量啊。)

百度搜索历史上的今天
先看一看有没有现成的数据,

import requestsurl = "https://baike.baidu.com/calendar/"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"}
rep  = requests.get(url=url,headers=headers)
html = rep.text
print(html)

打印完了之后发现啥数据都没有,除了广告

下一步就要看看有没有json接口数据了

使用抓包工具Fiddler 教程在这Fillder下载配置及汉化补丁(Windows版本)

用Fiddler找到了,复制此url(下面有现成的网页链接。)

查看json

数据轻松拿到了,接下来开始获取

获取并处理数据

  • 保存json的url

项目结构图

  • 导入需要的包
    在Scrapy_.py 文件下
import requests
import json
import time
import re
  • 分析url
url = "https://baike.baidu.com/cms/home/eventsOnHistory/08.json?_=1629275894939"
# 上面那个08是月份小于10需要前面加0,?=的是时间戳,写程序要写活,所以要把他们变为变量
#改进如下:
url = "https://baike.baidu.com/cms/home/eventsOnHistory/"+month+".json?_="+str(ts)

爬虫代码如下(Scrapy_.py文件下):

import requests
import json
import time
import redef get_Month():lt = time.localtime(time.time())lt = lt[1]if (lt>9):return str(lt)else:   # 月份小于10前面加个0,保证格式return "0"+str(lt)def get_Day():return str(time.localtime()[2])def get_ts(): # 获取时间戳return time.time()def returnApi():Api_list=[]month = get_Month()day = get_Day()ts = get_ts()headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36",}url = "https://baike.baidu.com/cms/home/eventsOnHistory/"+month+".json?_="+str(ts)html = requests.get(url=url,headers=headers).json()for i in range(len(html[month][month+day])): # 这个是上面url月份里具体的天数year = html[month][month+day][i]['year'] # 获取事件的年title = html[month][month+day][i]['title'] # 获取事件的标题link = html[month][month+day][i]['link'] # 获取事件的详情链接type = html[month][month+day][i]['type'] # 获取事件的类型(birthday,death,event)desc = html[month][month+day][i]['desc'] # 获取事件的详情title = re.sub(r'<.*?>','',title)  #去掉标题里一堆的超链接desc = re.sub(r'<.*?>','',desc)+'...' # 去掉详情里一堆的超链接The_Api = {"year":year,"title":title,"link":link,"desc":desc,"type":type} # 组成一个字典Api_list.append(The_Api) # 列表套字典return json.dumps(Api_list) # 编码成json数据,好调用if __name__ == '__main__':returnApi()

Flask调用处理过的数据( 在API_.py下)

from Scrapy_ import returnApi
import json
from flask import Flask,render_templateapp = Flask(__name__)
datas = json.loads(returnApi()) # 取的所有数据,列表套字典。
@app.route("/")
def index():return render_template('index2.html',datas=datas)if __name__ == '__main__':app.run(debug="True",host="127.0.0.1",port='5001')

HTML展示数据(在html2.html下)

  • style样式
    <title>历史上的今天</title><style>#events{width:590px;margin:0 auto;background:#EBEBED;}.year{margin-left:-88px;font-size:25px;}#time{align=center;width:550px;}.title{font-size:16px;}.desc{font-size:14px;color:#999999;margin-top:10px;}.event{width:510px;}dd{padding:15px;}dl{box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);border-radius: 25px;}#time{margin-left:100px;}</style>
</head>
  • 展示数据列表
<body>
<div id="events"><dl class="dl"><div id="time" ></div>{% for data in datas %}<dd><div class="year">{{ data['year'] }}年</div><div class="event"><div class="title">{{ data['title'] }}</div><div class="desc">{{ data['desc'] }}...<a href="{{ data['link'] }}">更多</a></div></div></dd>{% endfor %}</dl></div><script type="text/javascript">
<!--展示当前的详细时间-->
function time(){var vWeek,vWeek_s,vDay;
vWeek = ["星期天","星期一","星期二","星期三","星期四","星期五","星期六"];
var date =  new Date();
year = date.getFullYear();
month = date.getMonth() + 1;
day = date.getDate();
hours = date.getHours();
minutes = date.getMinutes();
seconds = date.getSeconds();
vWeek_s = date.getDay();
document.getElementById("time").innerHTML = year + "年" +month + "月" + day + "日" + "\t" + hours + ":" + minutes +":" + seconds + "\t" + vWeek[vWeek_s]+"\n历史上的今天" ;};
setInterval("time()",1000);</script></body>

GitHub项目原码

python爬取历史上的今天数据并展示。相关推荐

  1. python爬取历史天气_Python 爬取历史天气数据

    Python 爬取历史天气数据 作者:梅昊铭 1. 导读 之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取.今天Mo就来教大家如何使用Python来进行历史天气数据 ...

  2. Python爬虫,爬取51job上有关大数据的招聘信息

    Python爬虫,爬取51job上有关大数据的招聘信息 爬虫初学者,练手实战 最近在上数据收集课,分享一些代码. 分析所要爬取的网址 https://search.51job.com/list/000 ...

  3. python爬取电影评分_用Python爬取猫眼上的top100评分电影

    代码如下: # 注意encoding = 'utf-8'和ensure_ascii = False,不写的话不能输出汉字 import requests from requests.exception ...

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

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

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

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

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

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

  7. python爬取文献代码_使用python爬取MedSci上的影响因子排名靠前的文献

    使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn ...

  8. 1-3 用Python爬取微博上电影主题的热度(主题的阅读数和讨论数)

    1-3 用Python爬取微博上电影主题的热度(主题的阅读数和讨论数) 1 weiboHeat.py 2 #-*- coding:utf-8 -*- 3 ''' 4 该脚本可以从wap版的微博网站上爬 ...

  9. python爬取csdn上的包含整人关键词的阅读量并且存入表格里。完整代码

    请注意,爬取他人网站的数据可能违反网站的条款和条件.在进行爬虫操作之前,请确保获得网站的授权. 下面是一个使用 Python 爬取 CSDN 上所有包含 "整人" 关键词文章的阅读 ...

最新文章

  1. Java消息服务JMS详解
  2. java contions_Java基础---数组总结
  3. 代码坏味道 - 耦合
  4. 科大星云诗社动态20210225
  5. Spring下载地址
  6. 自定义loading加载
  7. 不融资,如何在大数据BI市场占据一席之地
  8. SQLSERVER 函数大全
  9. 分布式系统可用性与一致性
  10. tf-serving部署之踩坑记录
  11. 1438 绝对差不超过限制的最长连续子数组(暴力破解)
  12. Web前端jQuery实现监控大屏数字滚动
  13. 如何将ppt演示文稿上传到微信公众号?
  14. 开发人员实用的在线工具
  15. echart图表(自定义提示框) 鼠标移动到数据展示区自定义展示提示框 天/时/分/秒
  16. linux自动电梯设计,基于嵌入式Linux电梯控制系统
  17. Matplotlib多子图绘图后保存单个子图
  18. MFC在查找预编译头时遇到意外的文件结尾
  19. 更改DDWRT的默认配置基本步骤
  20. 看看成功例子 四款iPhone音乐APP应用赏析

热门文章

  1. 第十六章、Raid及mdadm命令
  2. 列表导航栏实例(02)——精美电子商务网站赏析
  3. Ubuntu 11.04上搭建Android开发环境
  4. 计算机主板的工作原理,计算机主板的工作原理.doc
  5. php 线程锁,如何使用python线程锁(实例解析)
  6. HTML DOM 方法
  7. 菜鸟级三层框架(EF+MVC)项目实战之 系列一 EF零基础创建领域模型
  8. android ListView详解
  9. 汇编实现地址对应值相加
  10. linux下多线程实现服务端