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

基于python的新闻爬虫

咱们这个任务啊,就是要从一个指定的网站上,抓取新闻内容,然后把它们整整齐齐地保存到本地。具体来说,就是要去光明网的板块里,瞅瞅里面的新闻,把它们一条条地保存下来。

首先,咱得有个网址,这就是咱要去的地方。然后用requests这个神奇的小工具,向这个网址发送个GET请求,就像是对网站说“喂,把你的内容给我送过来”。

接下来,用lxml这个库来解析网页,就像是拿到一本书,咱得知道目录在哪儿,正文在哪儿,才能把需要的内容找出来。

咱们的目标是抓取页面上的新闻链接,这些链接被放在了一系列的ul和li标签里。所以,咱得一个个ul去看,每个ul里面又是一堆li,每个li里面才是咱们要的新闻链接。

找到链接后,咱再次用requests去访问这个链接,把新闻的详细内容给抓回来。标题、正文咱都要,然后把它们整理一下,每条新闻保存成一个txt文件,文件名就按照咱抓取的顺序来编号,这样方便管理。

过程中,咱得注意,网页上的链接可能有的是完整的,有的可能就给了个后缀,咱得处理好这个,确保能正确访问到新闻的详细页面。然后,就是把新闻的标题和内容提取出来,去掉多余的空白字符,整整齐齐地写入到文件里。

这样一来,只要运行这段代码,咱就能自动化地把网站上的新闻一条条地保存到本地了,省时省力,还能随时回头看看收集到的新闻呢。

后续如果需要额外的处理和补充可以私信联系我

import requests
from lxml import html
import os# 目标网站的url
base_url = "https://politics.gmw.cn/"
url = base_url + "node_9844.htm"# 使用requests库发送GET请求到目标网站
response = requests.get(url)
response.encoding = 'utf-8'  # 尝试使用utf-8解码# 解析HTML内容
tree = html.fromstring(response.text)  # 使用text代替content# 文件编号
file_num = 1# 循环处理从ul[1]到ul[10]
for ul_index in range(1, 11):# 循环处理每个ul中的li标签,从li[1]开始,如果没有找到li标签,就跳出循环li_index = 1while True:try:# 构建XPathxpath = f'/html/body/div[6]/div[1]/div[2]/ul[{ul_index}]/li[{li_index}]/a'# 使用XPath查找特定的a标签a_tag = tree.xpath(xpath)# 如果找到了a标签if a_tag:# 获取a标签的href属性,也就是URLsub_url = a_tag[0].get('href')sub_url = base_url + sub_url if not sub_url.startswith('http') else sub_urlprint("子url为:",sub_url)# 获取子页面内容sub_response = requests.get(sub_url)sub_response.encoding = 'utf-8'  # 尝试使用utf-8解码sub_tree = html.fromstring(sub_response.text)  # 使用text代替content# 获取标题title = sub_tree.xpath('/html/body/div[6]/div[1]/h1/text()')title = title[0].strip() if title else ''  # 去除两端的空白字符# 获取正文contents = sub_tree.xpath('//*[@id="article_inbox"]/div[5]/p/text()')contents = '\n'.join([content.strip() for content in contents if content.strip()]) if contents else ''  # 去除两端的空白字符,并删除空行# 写入到文件with open(f'./txt/{str(file_num).zfill(2)}.txt', 'w', encoding='utf-8', errors='ignore') as f:f.write(title + '\n\n' + contents)# 更新文件编号file_num += 1else:# 如果没有找到a标签,就跳出循环break# 处理下一个li标签li_index += 1except Exception as e:print(f"处理XPath {xpath} 时发生错误: {e}")break

输出结果如下:

子url为: https://politics.gmw.cn/2023-06/28/content_36660331.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36660279.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36660246.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36660217.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36660215.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36660103.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36659630.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36659390.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36659337.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36659325.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36659297.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36659135.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658702.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658613.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658674.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658631.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658595.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658527.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658463.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658416.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658377.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658411.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658401.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658372.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658356.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657735.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657732.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657622.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657620.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657627.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658305.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657625.htm
子url为: https://politics.gmw.cn/2023-06/28/content_36658293.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657544.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657204.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657203.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36657192.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655447.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655793.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655772.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655744.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655734.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655703.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655712.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655729.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655735.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655693.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655613.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655425.htm
子url为: https://politics.gmw.cn/2023-06/27/content_36655404.htm

相关文章:

基于python的新闻爬虫

咱们这个任务啊,就是要从一个指定的网站上,抓取新闻内容,然后把它们整整齐齐地保存到本地。具体来说,就是要去光明网的板块里,瞅瞅里面的新闻,把它们一条条地保存下来。 首先,咱得有个网址&…...

C#基础题

值类型和引用类型之间的区别是什么? 值类型在内存中存储实际值,而引用类型存储对对象的引用。值类型在栈上分配内存,而引用类型在堆上分配内存。值类型是不可变的,而引用类型是可变的。值类型的大小是固定的,而引用类型…...

AI大语言模型学习笔记之三:协同深度学习的黑魔法 - GPU与Transformer模型

Transformer模型的崛起标志着人类在自然语言处理(NLP)和其他序列建模任务中取得了显著的突破性进展,而这一成就离不开GPU(图形处理单元)在深度学习中的高效率协同计算和处理。 Transformer模型是由Vaswani等人在2017年…...

c++阶梯之auto关键字与范围for

auto关键字&#xff08;c11&#xff09; 1. auto关键字的诞生背景 随着程序的逐渐复杂&#xff0c;程序代码中用到的类型也越来越复杂。譬如&#xff1a; 类型难以拼写&#xff1b;含义不明确容易出错。 比如下面一段代码&#xff1a; #include <string> #include &…...

第八篇:node模版引擎Handlebars及他的高级用法(动态参数)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; 引言&#xff1a; &#x1f…...

css3 属性 backface-visibility 的实践应用

backface-visibility 是一个用于控制元素在面对屏幕不同方向时的可见性的CSS3特性。它有两个可能的值&#xff1a; visible&#xff1a;当元素不面向屏幕&#xff08;即背面朝向用户&#xff09;时&#xff0c;元素的内容是可以被看到的。hidden&#xff1a;当元素不面向屏幕…...

嵌入式学习第十七天

C语言小项目&#xff1a; 制作俄罗斯方块小游戏&#xff08;全部&#xff09; 主函数部分 #include <stdio.h> #include <unistd.h> #include <string.h> #include <signal.h> #include <stdlib.h> #include <time.h> #include "b…...

使用Python的Turtle模块简单绘制烟花效果

import turtle import random# 初始化屏幕 screen turtle.Screen() screen.bgcolor("black") screen.title("烟花模拟")# 创建一个Turtle来绘制烟花 firework turtle.Turtle() firework.hideturtle() firework.speed(0) # 设置绘图速度为最快# 绘制烟花…...

数学建模-退火算法和遗传算法

退火算法和遗传算法 一&#xff0e;退火算法 退火算法Matlab程序如下&#xff1a; [W]xlsread(D:100个目标经度纬度);>> x[W(:,1)];>> y[W(:,2)];>> w[x y];;d1[70, 40];>> w[d1;w;d1]ww*pi/180;%角度化成弧度dzeros(102);%距离矩阵初始化for i1:101…...

Qt开源版 vs 商业版 详细比较!!!!

简单整理Qt开源版与商业版有哪些差别&#xff0c;仅供参考。 简单对比 开源版商业版许可证大部分采用对商业使用不友好的LGPLv3具备商业许可证保护代码专有许可证相关大部分模块使用LGPLv3和部分模块使用GPL组成仅第三方开源组件使用Qt的其他许可证Qt模块功能支持支持技术支持…...

华为云CodeArts Snap荣获信通院优秀大模型案例及两项荣誉证书

2024年1月25日&#xff0c;中国人工智能产业发展联盟智能化软件工程工作组&#xff08;AI for Software Engineering&#xff0c;下文简称AI4SE&#xff09;在京召开首届“AI4SE创新巡航”活动。在活动上&#xff0c;华为云大模型辅助系统测试代码生成荣获“2023AI4SE银弹优秀案…...

小程序的应用、页面、组件生命周期(超全版)

小程序生命周期 应用的生命周期 onLaunch: 初始化小程序完成时触发&#xff0c;且全局只触发一次&#xff1b; onShow: 小程序初始化完成&#xff08;启动&#xff09;或从后台切换到前台显示时触发&#xff1b; onHide: 小程序从前台切换到后台隐藏时触发&#xff08;如切换…...

TCP四次握手

TCP 协议在关闭连接时&#xff0c;需要进行四次挥手的过程&#xff0c;主要是为了确保客户端和服务器都能正确地关闭连接。 # 执行流程 四次挥手的具体流程如下&#xff1a; 客户端发送 FIN 包&#xff1a;客户端发送一个 FIN 包&#xff0c;其中 FIN 标识位为 1&#xff0c…...

EBC金融英国CEO:高波动性周期下,如何寻找市场的稳定性?

利率主导的市场&#xff0c;将在2024年延续。目前&#xff0c;固收市场对于降息的定价&#xff0c;正通过利率传导至不同资产中。尽管市场迫切利用通胀去佐证降息&#xff0c;但各国央行仍囿于通胀目标的政策桎梏。政策和市场预期的博弈将继续牵动市场脉搏&#xff0c;引发价格…...

C++ Web 编程

什么是 CGI&#xff1f; 公共网关接口&#xff08;CGI&#xff09;&#xff0c;是一套标准&#xff0c;定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。CGI 规范目前是由 NCSA 维护的&#xff0c;NCSA 定义 CGI 如下&#xff1a;公共网关接口&#xff08;CGI&…...

docker笔记整理

Docker 安装 添加yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装docker yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin 启动docker systemctl start docker 查看docker状态 s…...

什么是git,怎样下载安装?

简介&#xff1a; 应用场景&#xff1a; 应用场景&#xff1a;团队企业开发 作用&#xff1a; 安装&#xff1a; 1.网址&#xff1a;Git - Downloads 很卡很慢 2.可以选择镜像网站下载&#xff08;推荐&#xff09; CNPM Binaries Mirror...

Camille-学习笔记-测试流程和测试设计

## 测试用例学习路线 startmindmap * 测试用例 ** 黑盒测试方法论 *** 等价类 *** 边界值 *** 因果图 *** 判定表 *** 场景法 *** 基于模型的测试 ** 白盒测试方法论 ** 测试用例基础概念 ** 测试用例设计 ** 面试测试用例设计 ** 常用测试策略与测试手段 endmindmap **测试用…...

【Python笔记-设计模式】建造者模式

一、说明 又称生成器&#xff0c;是一种创建型设计模式&#xff0c;使其能够分步骤创建复杂对象。允许使用相同的创建代码生成不同类型和形式的对象。 (一) 解决问题 对象的创建问题&#xff1a;当一个对象的构建过程复杂&#xff0c;且部分构建过程相互独立时&#xff0c;可…...

【LVGL源码移植】

LVGL源码移植 ■ LVGL源码移植一&#xff1a;下载LVGL源码二&#xff1a;修改LVGL文件夹1: 将这5个文件&#xff0c;复制到一个新的文件夹2: 简化文件&#xff0c;减少内存消耗&#xff08;去除不必要的文件&#xff09;3: 为了规范化&#xff0c;我们将下列文件进行重命名 三&…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...

2025-05-08-deepseek本地化部署

title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek&#xff1a;小白也能轻松搞定&#xff01; 如何给本地部署的 DeepSeek 投喂数据&#xff0c;让他更懂你 [实验目的]&#xff1a;理解系统架构与原…...