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

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...