当前位置: 首页 > 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;我们将下列文件进行重命名 三&…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

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

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

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...