基于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关键字(c11) 1. auto关键字的诞生背景 随着程序的逐渐复杂,程序代码中用到的类型也越来越复杂。譬如: 类型难以拼写;含义不明确容易出错。 比如下面一段代码: #include <string> #include &…...

第八篇:node模版引擎Handlebars及他的高级用法(动态参数)
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📘 引言: …...

css3 属性 backface-visibility 的实践应用
backface-visibility 是一个用于控制元素在面对屏幕不同方向时的可见性的CSS3特性。它有两个可能的值: visible:当元素不面向屏幕(即背面朝向用户)时,元素的内容是可以被看到的。hidden:当元素不面向屏幕…...

嵌入式学习第十七天
C语言小项目: 制作俄罗斯方块小游戏(全部) 主函数部分 #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) # 设置绘图速度为最快# 绘制烟花…...

数学建模-退火算法和遗传算法
退火算法和遗传算法 一.退火算法 退火算法Matlab程序如下: [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开源版与商业版有哪些差别,仅供参考。 简单对比 开源版商业版许可证大部分采用对商业使用不友好的LGPLv3具备商业许可证保护代码专有许可证相关大部分模块使用LGPLv3和部分模块使用GPL组成仅第三方开源组件使用Qt的其他许可证Qt模块功能支持支持技术支持…...

华为云CodeArts Snap荣获信通院优秀大模型案例及两项荣誉证书
2024年1月25日,中国人工智能产业发展联盟智能化软件工程工作组(AI for Software Engineering,下文简称AI4SE)在京召开首届“AI4SE创新巡航”活动。在活动上,华为云大模型辅助系统测试代码生成荣获“2023AI4SE银弹优秀案…...
小程序的应用、页面、组件生命周期(超全版)
小程序生命周期 应用的生命周期 onLaunch: 初始化小程序完成时触发,且全局只触发一次; onShow: 小程序初始化完成(启动)或从后台切换到前台显示时触发; onHide: 小程序从前台切换到后台隐藏时触发(如切换…...

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

EBC金融英国CEO:高波动性周期下,如何寻找市场的稳定性?
利率主导的市场,将在2024年延续。目前,固收市场对于降息的定价,正通过利率传导至不同资产中。尽管市场迫切利用通胀去佐证降息,但各国央行仍囿于通胀目标的政策桎梏。政策和市场预期的博弈将继续牵动市场脉搏,引发价格…...

C++ Web 编程
什么是 CGI? 公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下:公共网关接口(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,怎样下载安装?
简介: 应用场景: 应用场景:团队企业开发 作用: 安装: 1.网址:Git - Downloads 很卡很慢 2.可以选择镜像网站下载(推荐) CNPM Binaries Mirror...
Camille-学习笔记-测试流程和测试设计
## 测试用例学习路线 startmindmap * 测试用例 ** 黑盒测试方法论 *** 等价类 *** 边界值 *** 因果图 *** 判定表 *** 场景法 *** 基于模型的测试 ** 白盒测试方法论 ** 测试用例基础概念 ** 测试用例设计 ** 面试测试用例设计 ** 常用测试策略与测试手段 endmindmap **测试用…...

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

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

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...