基于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: 为了规范化,我们将下列文件进行重命名 三&…...
GitHub加速插件:让国内开发者告别龟速下载的终极解决方案
GitHub加速插件:让国内开发者告别龟速下载的终极解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为GitHub…...
为Dify构建OpenAI兼容层:无缝接入AI生态的Rust代理服务
1. 项目概述:为Dify平台构建OpenAI兼容层如果你正在使用Dify平台来构建和管理你的AI应用,同时又希望利用那些为OpenAI API设计的丰富生态工具(比如各种客户端库、监控面板、甚至是某些需要特定API格式的第三方服务),那…...
3步完成Android Studio中文界面汉化:提升Android开发效率的终极指南
3步完成Android Studio中文界面汉化:提升Android开发效率的终极指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 你…...
告别手动截图!用易语言+大漠插件5分钟搞定游戏内文字自动识别(附字库制作避坑指南)
易语言与大漠插件:游戏自动化文字识别的高效实践 在游戏自动化领域,文字识别一直是开发者面临的核心挑战之一。传统的手动截图、人工比对方式不仅效率低下,还容易出错。而借助易语言与大漠插件的强大组合,我们可以轻松实现游戏内文…...
软件工程毕设简单的开题分享
文章目录🚩 1 前言1.1 选题注意事项1.1.1 难度怎么把控?1.1.2 题目名称怎么取?1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢?🚩2 选题概览🚩 3 项目概览题目1 : 深度学习社交距离检…...
探索Taotoken模型广场如何帮助开发者快速进行模型选型与测试
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 探索Taotoken模型广场如何帮助开发者快速进行模型选型与测试 对于需要集成大模型能力的开发者而言,面对市场上众多厂商…...
通过OpenClaw配置Taotoken实现自动化AI工作流的教程
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过OpenClaw配置Taotoken实现自动化AI工作流的教程 对于使用OpenClaw构建智能体工作流的开发者而言,统一接入多个大模…...
Win10/Win11下易语言调用大漠插件后台绑定游戏窗口的保姆级教程(含管理员权限避坑)
Win10/Win11下易语言调用大漠插件后台绑定游戏窗口的实战指南 最近在帮朋友调试一个游戏自动化工具时,遇到了一个棘手的问题:在Win11系统上,使用易语言调用大漠插件进行后台窗口绑定总是失败。经过三天三夜的调试和测试,终于摸清了…...
基于Codai框架构建定制化AI编码助手:从RAG原理到微服务代码生成实战
1. 项目概述:一个面向现代开发者的AI编码助手框架最近在GitHub上闲逛,发现了一个挺有意思的项目,叫meysamhadeli/codai。乍一看名字,可能很多人会以为又是一个类似GitHub Copilot的AI代码补全工具。但深入探究后,我发现…...
手把手教你:误删pyvenv.cfg后,如何快速重建Python虚拟环境(附详细步骤)
手把手教你:误删pyvenv.cfg后,如何快速重建Python虚拟环境(附详细步骤) 虚拟环境是Python开发中的"隔离舱",而pyvenv.cfg文件则是这个隔离舱的"控制面板"。当你发现误删这个关键文件后,…...
