import datetime
import json
import re import requests class Kr36(object):
def __init__(self):
self.url = "https://36kr.com/information/web_news/"
self.headers = {
"Host": "36kr.com",
"referer": "https://36kr.com/",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
self.file = open("36kr.json", "w", encoding="utf-8") def parse_data(self, data):
match_list = re.search(r'<script>window.initialState=(.*?)</script>', data)
# 拿到正则匹配的第一个组的内容
group1 = match_list.group(1)
# 将json转换为python字典
json_dict = json.loads(group1)
# print(json_dict) results_list = [] # 遍历获取需要的信息
for item in json_dict["information"]["informationList"]["itemList"]:
url = f"""https://36kr.com/p/{item["templateMaterial"]["itemId"]}"""
title = item["templateMaterial"]["widgetTitle"]
img_url = item["templateMaterial"]["widgetImage"]
publish_time = item["templateMaterial"]["publishTime"] # 将整合的字典添加到列表中
results_list.append({
"title": title,
"url": url,
"img_url": img_url,
"publish_time": datetime.datetime.fromtimestamp(publish_time / 1000).isoformat()
}) return results_list def get_data(self) -> bytes:
"""发送请求,返回二进制响应体数据"""
resp = requests.get(self.url, headers=self.headers)
# 这里不decode了,调用者自行decode
return resp.content def save_data(self, data):
self.file.write(json.dumps(data, ensure_ascii=False, indent=4)) def __del__(self):
self.file.flush()
self.file.close() def run(self):
resp = self.get_data()
data = self.parse_data(resp.decode())
self.save_data(data) if __name__ == '__main__':
Kr36().run()

【笔记整理】[案例]使用正则表达式来提取36Kr新闻的更多相关文章

  1. Deep Learning(深度学习)学习笔记整理系列之(八)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  2. 运维开发笔记整理-URL配置

    运维开发笔记整理-URL配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.URL路由 对于高质量的Web应用来说,使用简洁,优雅的URL的路由是一个非常值得重视的细节.Dja ...

  3. 布客&#183;ApacheCN 翻译/校对/笔记整理活动进度公告 2020.1

    注意 请贡献者查看参与方式,然后直接在 ISSUE 中认领. 翻译/校对三个文档就可以申请当负责人,我们会把你拉进合伙人群.翻译/校对五个文档的贡献者,可以申请实习证明. 请私聊片刻(52981514 ...

  4. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  5. Deep Learning(深度学习)学习笔记整理系列之(二)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  6. Deep Learning(深度学习)学习笔记整理系列之(一)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0  2013-0 ...

  7. MySQL 笔记整理(1) --基础架构,一条SQL查询语句如何执行

    最近在学习林晓斌(丁奇)老师的<MySQL实战45讲>,受益匪浅,做一些笔记整理一下,帮助学习.如果有小伙伴感兴趣的话推荐原版课程,很不错. 1) --基础架构,一条SQL查询语句如何执行 ...

  8. Deep Learning(深度学习)学习笔记整理系列之(一)(转)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0  2013-0 ...

  9. 【转】Deep Learning(深度学习)学习笔记整理系列之(一)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0  2013-0 ...

  10. NPM 学习笔记整理

    NPM 学习笔记整理 阅读 550,2017年06月04日 发布,来源:blog.ihoey.com 什么是 NPM npm 之于 Node ,就像 pip 之于 Python , gem 之于 Ru ...

随机推荐

  1. 京东搜索EE链路演进

    导读 搜索系统中容易存在头部效应,中长尾的优质商品较难获得充分的展示机会,如何破除系统的马太效应,提升展示结果的丰富性与多样性,助力中长尾商品成长是电商平台搜索系统的一个重要课题.其中,搜索EE系统在 ...

  2. KMP字符串对比算法及next数组计算

    (注:该贴主要运用python实现该算法) 先谈谈KMP算法吧.KMP算法的全称是Knuth-Morris-Pratt 算法,它是用来进行字符串查找,即在某个主字符串里面找到某个特定子字符串.但是好像 ...

  3. Laf 云开发平台及其实现原理

    Laf 产品介绍 自我介绍 大家好,我是来自 Laf 团队的王子俊,很高兴今天能在这里给大家分享我们 Laf 云开发平台及其实现原理.本来想说一点什么天气之类的话作为开头,但主持人都说完啦,我就不多说 ...

  4. JDK17和JDK8在windows上同时安装方便切换

    参考:https://blog.csdn.net/chencaw/article/details/121674479 一.JDK8的安装 1.电脑上已经安装了JDK8,安装主要步骤如下 (1)创建JA ...

  5. 基于AvaSpe 2048测定物体的光谱曲线

      本文介绍基于AvaSpec-ULS2048x64光纤光谱仪测定植被.土壤等地物高光谱曲线的方法.   AvaSpec是由荷兰著名的光纤光谱仪器与系统开发公司Avantes制造的系列高性能光谱仪,广 ...

  6. Springboot简单功能示例-2 KEY初始化功能和全局错误处理

    springboot-sample 介绍 springboot简单示例 跳转到发行版 查看发行版说明 软件架构(当前发行版使用) springboot hutool-all 非常好的常用java工具库 ...

  7. Android历史版本

    目录 [隐藏]  1 测试版 2 版本列表 2.1 Android 1.0 2.2 Android 1.1 2.3 Android 1.5 Cupcake 2.4 Android 1.6 Donut ...

  8. 基于.Net 的 AvaloniUI 多媒体播放器方案汇总

    基于.Net 的 AvaloniUI 多媒体播放器方案汇总 摘要 随着国产化的推进,相信.Net的桌面端的小伙伴的可能已经有感受到了. 为了让.Net的桌面框架能够跨桌面平台,首选的就是Avalona ...

  9. CF1364B

    题目简化和分析: 这题没啥好说的,找其绝对值最大,也就是找到每一个山峰山谷. 这样不仅满足选择的个数最少,并且值最大. 正确性证明: 若 \(a\le b\le c\) \(|a-b|+|b-c|=( ...

  10. Interesting Array 题解

    Interesting Array 题目大意 构造一个序列 \(a\),使其满足若干限制条件,每个限制条件是形如 l r q 的式子,其意义是:\(\&_{i=l}^ra_i=q\). 题意分 ...