当前位置: 首页 > news >正文

python 上海新闻爬虫

1. 起因, 目的:

  • 继续做新闻爬虫。我之前写过。
  • 此文先记录2个新闻来源。
  • 后面打算进行过滤,比如只选出某一个类型新闻。

2. 先看效果

过滤出某种类型的新闻,然后生成 html 页面,而且,自动打开这个页面。
比如科技犯罪类的新闻。

3. 过程:

代码 1 ,爬取东方网
  • 很久之前写过,代码还能用。
  • 这里虽然是复制一下,也是为了自己方便。
import os
import csv
import time
import requests"""
# home: https://sh.eastday.com/
# 1. 标题, url, 来源,时间
"""headers = {'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36'
}def get_data(pages):file_name = '5.8.400.csv'             # 400个标题。has_file =  os.path.exists(file_name)# 打开文件,写入模式with open(file_name, 'a', newline='', encoding='utf-8') as file:# 创建一个csv.DictWriter对象,用于写入字典数据columns = ['title', 'url', 'time','source']writer = csv.DictWriter(file, fieldnames=columns)# 写入表头if not has_file:writer.writeheader()# 爬取数据. 默认是 20页,每页20条。 每天大概有400个新闻。for i in range(pages):print(f"正在爬取第{i+1} / {pages}页数据")time.sleep(0.5)url = f"https://apin.eastday.com/apiplus/special/specialnewslistbyurl?specialUrl=1632798465040016&skipCount={i * 20}&limitCount=20"resp = requests.get(url, headers=headers)if resp.status_code!= 200:print(f"请求失败:{resp.status_code}")breakret = resp.json()junk = ret['data']['list']for x in junk:item = dict()# print(x)item["time"] = x["time"]item['title'] = x["title"]item["url"] = x["url"]item["source"] = x["infoSource"]# 写入数据writer.writerow(item)# print(item)get_data(pages=20)
代码 2 , 爬取, 澎湃新闻
  • 也是很简单。
import os
import csv
import time
import requests
from datetime import datetime, timedelta# 请求头
headers = {'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36','Content-Type': 'application/json',  # 响应头要求 Content-Type'Referer': 'https://www.thepaper.cn/',  # 引荐来源,遵循 strict-origin-when-cross-origin'Origin': 'https://www.thepaper.cn'  # 跨域请求需要 Origin
}def get_thepaper_data(file_name='peng_pai_400.csv', max_pages=100, channel_id='-8'):"""爬取澎湃新闻数据,保存到 CSV 文件参数:file_name: 输出 CSV 文件名max_pages: 最大爬取页数channel_id: 新闻频道 ID"""# 检查文件是否存在has_file = os.path.exists(file_name)# 打开 CSV 文件,追加模式with open(file_name, 'a', newline='', encoding='utf-8') as file:columns = ['title', 'url', 'time', 'source']writer = csv.DictWriter(file, fieldnames=columns)if not has_file:writer.writeheader()# 计算 startTime(当前时间戳)current_time = int(time.time() * 1000)  # 当前毫秒时间戳start_time = current_time  # 使用此时此刻的时间# 爬取数据for page in range(1, max_pages + 1):time.sleep(0.5)  # 请求间隔payload = {'channelId': channel_id,'excludeContIds': [],  # 留空,需根据实际需求调整'province': '','pageSize': 20,'startTime': start_time,'pageNum': page}url = 'https://api.thepaper.cn/contentapi/nodeCont/getByChannelId'resp = requests.post(url, headers=headers, json=payload, timeout=10)if resp.status_code != 200:print(f"请求失败:{url}, 状态码: {resp.status_code}, 页码: {page}")breakret = resp.json()# print(f"页面 {page} 响应:{ret}")news_list = ret['data']['list']for item in news_list:# print(item)news = {}news['title'] = item.get('name', '')news['url'] = f"https://www.thepaper.cn/newsDetail_forward_{item.get('originalContId', '')}"news['time'] = item.get('pubTimeLong', '')news['source'] = item.get('authorInfo', {}).get('sname', '澎湃新闻')# 转换时间格式(如果 API 返回时间戳)news['time'] = datetime.fromtimestamp(news['time'] / 1000).strftime('%Y-%m-%d %H:%M:%S')# 直接写入,不去重writer.writerow(news)print(f"保存新闻:{news}")if __name__ == "__main__":get_thepaper_data(file_name='peng_pai_400.csv', max_pages=20, channel_id='-8')

4. 结论 + todo

1 数据来源,还需要增加。可选项:

- 上观新闻 shobserver.com   与解放日报关联,报道上海本地案件。
- 新浪新闻 news.sina.com.cn  全国性新闻,包含科技犯罪。
- 腾讯新闻 news.qq.com       聚合多种来源,覆盖广泛。
  1. 聚合。 提取出自己感兴趣的新闻,比如,科技犯罪。

希望对大家有帮助。

相关文章:

python 上海新闻爬虫

1. 起因, 目的: 继续做新闻爬虫。我之前写过。此文先记录2个新闻来源。后面打算进行过滤,比如只选出某一个类型新闻。 2. 先看效果 过滤出某种类型的新闻,然后生成 html 页面,而且,自动打开这个页面。 比如科技犯罪…...

【Axure高保真原型】中继器表格批量上传数据

今天和大家分享中继器表格批量上传数据的原型模板,效果包括: 点击上传按钮,可以真实的打开本地文件夹选择文件; 选择的文件如果不是表格格式(xls、xlsx、xlt、csv),就会显示提示弹窗&#xff1…...

复刻低成本机械臂 SO-ARM100 单关节控制(附代码)

视频讲解: 复刻低成本机械臂 SO-ARM100 单关节控制(附代码) 代码仓库:GitHub - LitchiCheng/SO-ARM100: Some Test code on SO-ARM100 昨天用bambot的web的方式调试了整个机械臂,对于后面的仿真的sim2real来说&#x…...

视频编解码学习7之视频编码简介

视频编码技术发展历程与主流编码标准详解 视频编码技术是现代数字媒体领域的核心技术之一,它通过高效的压缩算法大幅减少了视频数据的体积,使得视频的存储、传输和播放变得更加高效和经济。从早期的H.261标准到最新的AV1和H.266/VVC,视频编码…...

【NextPilot日志移植】整体功能概要

整体日志系统的实现功能 该日志系统主要实现了飞行日志的记录功能,支持多种日志记录模式,可将日志存储到文件或通过 MAVLink 协议传输,同时具备日志加密、空间管理、事件记录等功能。具体如下: 日志记录模式:支持按武…...

Windows系统下使用Kafka和Zookeeper,Python运行kafka(二)

1.配置 Zookeeper 进入解压后的 Zookeeper 目录(例如 F:\zookeeper\conf),复制 zoo_sample.cfg 文件并命名为 zoo.cfg(如果 zoo.cfg 已经存在,则直接编辑该文件)。 打开 zoo.cfg 文件,配置相关…...

《构建社交应用用户激励引擎:React Native与Flutter实战解析》

React Native凭借其与JavaScript和React的紧密联系,为开发者提供了一个熟悉且灵活的开发环境。在构建用户等级体系时,它能够充分利用现有的前端开发知识和工具。通过将用户在社交应用中的各种行为进行量化,比如发布动态的数量、点赞评论的次数…...

Oracle OCP认证考试考点详解083系列13

题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 61. 第61题: 题目 解析及答案: 关于基于RPM的Oracle数据库安装,以下哪两项是正确的? A) …...

【AI】DeepWiki 页面转换成 Markdown 保存 - Chrome 扩展

GitHub: https://github.com/zxmfke/deepwiki-md-chrome-extension 背景 个人比较喜欢整理项目架构,更多都是保存成 markdown 的格式保存,然后发博客。deepwiki 刚好把 github 仓库代码的架构输出出来了,不过没有办法下载成 markdown 格式&…...

HTTP 状态码是服务器对客户端请求的响应标识,用于表示请求的处理结果

以下是完整的 HTTP 状态码分类和常见状态码详解: 一、状态码分类(5大类) 分类范围描述常见场景1xx100-199信息性响应请求已被接收,继续处理2xx200-299成功响应请求成功处理3xx300-399重定向响应需要进一步操作4xx400-499客户端错…...

【AI论文】FlexiAct:在异构场景中实现灵活的动作控制

摘要:动作定制涉及生成视频,其中主体执行由输入控制信号指示的动作。 当前的方法使用姿势引导或全局运动定制,但受到空间结构(如布局、骨架和视点一致性)严格约束的限制,降低了在不同主题和场景下的适应性。…...

ubuntu24.04安装anaconda

1. ubuntu安装ananconda 进入官网:添加链接描述 直接点击Download下载,它会自动匹配合适的版本 打开保存下载文件,点击右键,选择在终端打开,输入 bash Anaconda3-2024.10-1-Linux-x86_64.sh不断点击Enter&#xff0c…...

六、Hadoop初始化与启动

成功部署一个Hadoop集群并不仅仅是安装好软件那么简单。在它真正能够为我们处理海量数据之前,还需要一系列精心的初始化和启动步骤。这些步骤确保了各个组件能够正确协同工作。完成启动后,Hadoop还提供了便捷的 Web 用户界面 (Web UI),帮助我…...

边缘网关(边缘计算)

边缘网关是边缘计算架构中的关键组件,充当连接终端设备(如传感器、IoT设备)与云端或核心网络的桥梁。它在数据源头附近进行实时处理、分析和过滤,显著提升效率并降低延迟。 核心功能 协议转换 ○ 支持多种通信协议(如…...

学成在线之课程管理

一:业务概述 我负责的课程管理这一块,可以发布课程,可以对课程列表进行一个管理,发布课程这分为三步:首先是需要进行填写课程相关的信息,再设计这个课程的大纲,最后是选择发布这门课程&#xff…...

python里面的class,类,方法,函数,def

一、ds 好的!我将用专业术语结合通俗解释来梳理这些概念,并用结构化方式呈现它们的关系: 1. 核心概念解析 类 (Class) 定义:类是面向对象编程(OOP)中的核心概念,是创建对象的模板(蓝图)。它封装了一组属性(数据)和方法(行为),用于描述具有相同特征和功能的对象…...

复盘20250508

根据行业趋势、政策支持、公司基本面及技术壁垒,我推荐以下两支最可能持续上涨的个股,并深度分析原因: 1. 奥普光电(机器视觉光刻机芯片) 核心逻辑: 光刻机国产化核心标的:控股股东长春光机所…...

数据结构 - 10( B- 树 B+ 树 B* 树 4000 字详解 )

一:B- 树 1.1 B- 树的引入 在使用二叉搜索树对数据进行排序时,存在一个缺陷:随着数据量的增大,二叉搜索树的高度也会随之增加。虽然在数据量较小时,这种情况并不明显,但当数据量变得庞大时,树…...

算法与数据结构 - 常用图算法总结

在图论中,图算法非常重要,广泛应用于计算机科学、网络分析、社交网络、地理信息系统等领域。下面是一些常用的图算法,按不同功能和应用场景分类: 1. 图的遍历 图遍历算法用于遍历图中的节点和边。主要有两种常见的图遍历方法&am…...

涨薪技术|0到1学会性能测试第53课-Tomcat配置

前面的推文我们掌握了Tomcat服务器的3种监控技术知识。今天给大家分享Tomcat调优技术。后续文章都会系统分享干货,带大家从0到1学会性能测试。 01Tomcat配置 当Tomcat服务器安装好并开始运行后,需要对服务器进行一些基本配置,通常关于Tomcat服务器的配置包括两部分: 第一:…...

亚马逊推出新型仓储机器人 Vulcan:具备“触觉”但不会取代人类工人

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

后退n帧协议

滑动窗口机制(Sliding Window) 发送方有一个发送窗口,最多可以连续发送 N 个未确认的帧(N 就是窗口大小)。 接收方通常只有一个接收窗口,只接收按序到达的帧,不接受乱序帧。 累计确认机制&…...

R9周:RNN实现阿尔茨海默病诊断

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、导入数据 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import torch import torch.nn as nn f…...

node.js 实战——在express 中将input file 美化,并完成裁剪、上传进度条

美化上传按钮 在ejs 页面 <!DOCTYPE html> <html> <head><meta charset"utf-8"></meta><title><% title %></title><link relstylesheet href/stylesheets/form.css/><!-- 本地 Bootstrap 引入方式 -->…...

Linux环境下部署MaxScale

测试环境&#xff1a;两台服务器&#xff0c;Mysql版本 8.0&#xff0c;linux版本&#xff1a;Ubuntu 20.04.3&#xff1b; 介绍 在我之前的文章里面有介绍MySql主从服务器的配置&#xff0c;我们项目通常使用.NET开发Server端&#xff0c;如果是代码直接去管理主从服务器的访…...

新能源汽车CAN通信深度解析:MCU、VCU、ECU协同工作原理

1. 什么是CAN通信&#xff1f; CAN&#xff08;Controller Area Network&#xff0c;控制器局域网&#xff09; 是一种广泛应用于汽车电子系统的串行通信协议&#xff0c;由德国Bosch公司在1980年代开发&#xff0c;主要用于实现车内电子控制单元&#xff08;ECU&#xff09;之…...

按句子切分文本、保留 token 对齐信息、**适配 tokenizer(如 BERT)**这种需求

在之前的文章中我解释了 把长文本切分成一句一句的小段&#xff08;chunk&#xff09;&#xff0c;每一段尽量是一个完整的句子&#xff0c;而不是强行按字数截断。 但是这个方法自己写会比较复杂&#xff0c;有很多处理这种场景的工具可以直接拿来用。 下面就 处理按句子切分…...

缓存(1):三级缓存

三级缓存是指什么 我们常说的三级缓存如下&#xff1a; CPU三级缓存Spring三级缓存应用架构&#xff08;JVM、分布式缓存、db&#xff09;三级缓存 CPU 基本概念 CPU 的访问速度每 18 个月就会翻 倍&#xff0c;相当于每年增⻓ 60% 左右&#xff0c;内存的速度当然也会不断…...

Kubernetes client-go 客户端类型与初始化指南

Kubernetes client-go 客户端类型与初始化指南 在 Kubernetes 的 client-go 库中&#xff0c;存在多种客户端用于与 API 服务器交互。以下介绍主要客户端类型&#xff0c;包括用途、初始化方式及 Demo。 1. RESTClient 用途 RESTClient 是底层 REST 客户端&#xff0c;直接…...

【金仓数据库征文】金仓数据库:创新驱动,引领数据库行业新未来

一、引言 在数字化转型的时代洪流中&#xff0c;数据已跃升为企业的核心资产&#xff0c;宛如企业运营与发展的 “数字命脉”。从企业日常运营的精细化管理&#xff0c;到战略决策的高瞻远瞩制定&#xff1b;从客户关系管理的深度耕耘&#xff0c;到供应链优化的全面协同&…...

图漾相机——Sample_V2示例程序(待补充)

文章目录 1.SDK支持的平台类型1.1 Windows 平台1.2 Linux平台 2.Sample_V2编译流程2.1 Windows环境2.2 Linux环境编译 3.Sample_V2示例程序测试3.1 ListDevice_v23.2 DepthStream_v23.3 ExposureTimeSetting_v23.4 ForceDeviceIP_v23.5 GetCalibData_v23.6 NetStatistic_v23.7 …...

手写 vue 源码 ===:自定义调度器、递归调用规避与深度代理

目录 引言 自定义调度器&#xff08;Scheduler&#xff09; 什么是调度器&#xff1f; 调度器的实现原理 自定义调度器的实际应用 切面编程&#xff08;AOP&#xff09;思想在调度器中的应用 递归调用规避 递归调用的问题 Vue 如何规避递归调用 深度代理&#xff08;D…...

WPF实时调试的一种实现方法

在WPF程序中&#xff0c;如果我们需要对程序进行调试&#xff0c;一般是使用断点/单步或输出日志之类的调试方法。 如果我们需要实时查看程序输出&#xff0c;可以将程序的输出类型修改为控制台应用程序 这样我们在程序运行后&#xff0c;就可以得到一个控制台窗口。 然后再配…...

数据库操作

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…...

学习笔记:数据库——事务

1.内容&#xff1a; 基于现有数据库设计检查点实验&#xff0c;观察比较提交前后执行结果并分析。 2.实现 源码 -- 开启事务 START TRANSACTION;-- 插入一条订单记录&#xff08;客户ID为10002&#xff09; INSERT INTO orders (o_date, c_id) VALUES (NOW(), 10002);-- 获…...

企业级可观测性实现:OpenObserve云原生平台的本地化部署与远程访问解析

文章目录 前言1. 安装Docker2. 创建并启动OpenObserve容器3. 本地访问测试4. 公网访问本地部署的OpenObserve4.1 内网穿透工具安装4.2 创建公网地址 5. 配置固定公网地址 前言 嘿&#xff0c;各位小伙伴们&#xff0c;今天要给大家揭秘一个在云原生领域里横扫千军的秘密法宝—…...

【Linux系统】第三节—权限

Hello&#xff0c;好久不见—— 云边有个稻草人-CSDN个人博客主页 Linux-本节文章所属专栏-欢迎订阅-持续更新中~~~ 目录 hi&#xff01;在这里—本节课重要知识点详解 一、Shell命令以及运行原理 二、Linux权限 2.1 Linux权限的概念 2.2 Linux权限管理 2.3 ⽂件权限值的…...

@Data和 @NoArgsConstructor注解详解

Data 和 NoArgsConstructor 注解详解 1. Data 注解 作用&#xff1a;Data 是 Lombok 提供的一个复合注解&#xff0c;用于自动生成 Java 类的常用方法&#xff0c;减少样板代码。生成的内容&#xff1a; Getter 和 Setter&#xff1a;为所有非静态、非 final 字段生成 getter…...

《云计算》第三版总结

《云计算》第三版总结 云计算体系结构 云计算成本优势 开源云计算架构Hadoop2.0 Hadoop体系架构 Hadoop访问接口Hadoop编程接口 Hadoop大家族 分布式组件概述ZooKeeperHbasePigHiveOozieFlumeMahout 虚拟化技术 服务器虚拟化存储虚拟化网络虚拟化桌面虚拟化OpenStack开源虚…...

滚珠导轨:电子制造领域精密运动的核心支撑

电子制造正朝着高精度、高效率方向飞速发展&#xff0c;滚珠导轨在这一进程中扮演着重要角色。滚珠导轨在电子制造领域中具有广泛且重要的应用&#xff0c;主要体现在以下几个方面&#xff1a; 1、印刷电路板&#xff08;PCB&#xff09;制造设备&#xff1a;滚珠导轨在PCB制造…...

Spark缓存--cache方法

在Spark 中&#xff0c;cache() 是用于优化计算性能的核心方法之一&#xff0c;但它有许多细节需要深入理解。以下是关于 cache() 的详细技术解析&#xff1a; 1. cache() 的本质 简化的 persist()&#xff1a;cache() 是 persist(StorageLevel.MEMORY_ONLY) 的快捷方式&#x…...

kafka logs storage

Kafka 会将日志文件按段&#xff08;Segment&#xff09;存储。 Segment是Kafka的最小存储单元&#xff0c;它是一个可追加的文件&#xff0c;用于存储Kafka分区中的一部分消息。 在文件系统中&#xff0c;Partition 是目录名&#xff0c;而Segment 是文件名。 Segment可以通过…...

数据分析平台选型与最佳实践:如何打造高效、灵活的数据生态?

数据分析平台选型与最佳实践:如何打造高效、灵活的数据生态? 在大数据时代,数据分析平台已经成为企业决策的核心支撑。从传统 BI(商业智能)到现代 AI 驱动的数据分析,选择合适的平台不仅影响数据处理效率,也决定了企业的数字化竞争力。面对市场上的众多解决方案(如 Ap…...

MYSQL之索引结构,为何要用B+树

索引的目的就是为了提高查询效率 索引的结构是B树&#xff0c;那么说到B树&#xff0c;必须提一下其他三种结构&#xff0c;分别是&#xff1a;二叉查找树、平衡二叉树、B树 我们来看看各自的结构特征 二叉查找树 特点:任何节点的左子节点的值都小于当前节点的值&#xff0c;右…...

OpenCV 中用于背景分割的一个类cv::bgsegm::BackgroundSubtractorLSBP

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::bgsegm::BackgroundSubtractorLSBP 是 OpenCV 中用于背景分割的一个类&#xff0c;它基于局部样本二进制模式&#xff08;Local Sample Bina…...

【PmHub后端篇】PmHub Gateway全局过滤器:接口调用耗时统计及黑白名单配置技术深度解析

在微服务架构日益成为现代应用开发主流模式的背景下&#xff0c;网关作为微服务架构前端的关键组件&#xff0c;肩负着路由请求、负载均衡、安全认证、流量控制、监控和日志记录等多项重要任务。本文将围绕PmHub项目中Gateway全局过滤器实现接口调用耗时统计的相关技术进行深入…...

国产激光二极管厂家

中国在激光二极管&#xff08;Laser Diode&#xff09;领域已有多家厂商布局&#xff0c;涵盖从低功率到高功率、不同波长的产品&#xff0c;应用于工业、医疗、通信、消费电子等领域。以下是部分国产激光二极管厂家及相关信息&#xff0c;供参考&#xff1a; 1. 武汉锐科光纤…...

安卓基础(XML)

123 属性​​​​行为​​​​适用场景​​​​注意事项​​match_parent填满父容器可用空间全屏视图、占满剩余空间父容器需有固定尺寸wrap_content根据内容自适应尺寸动态文本、图标、浮动按钮内容过长时可能超出父容器需处理 123 ​​属性​​​​作用​​​​常用值​​…...

uniapp|获取当前用户定位、与系统设定位置计算相隔米数、实现打卡签到(可自定义设定位置、位置有效范围米数)

基于UniApp阐述移动应用开发中定位功能的实现全流程,涵盖实时定位获取、动态距离计算与自定义位置、有效范围设定等功能。文章提供完整的代码示例与适配方案,适用于社交签到、课堂教室打卡等场景。 目录 引言定位功能在移动应用中的价值(社交、导航、O2O等场景)UniApp跨平台…...

matlab稳定求解高精度二维对流扩散方程

利用MATLAB稳定求解高精度二维对流扩散方程 Diffusion_1D.m , 2310 Diffusion_2D.m , 3813 license.txt , 1334...