使用python查看官网是否发布新的内容

目录

前言

第一章、python介绍和使用pip install下载包

1.python介绍

 2.使用vscode编写python

3.pip install的使用

第二章、查看官网是否发布新的内容

第三章、代码实现

目录结构

代码实现

check_new_news.py

files.py

news.py

main.py

 

file.txt

运行演示


前言

也作为半名新媒体工作者吧,查看学院官网是否发布新闻以安排下一步的工作,想必是新媒体工作者都要做的工作之一吧。于是乎就像使用py来实现上述功能。因为最开始学的C++,对py不太了解,以为需要使用爬虫才能实现,后来随着了解的深入,发现我只是查看官网上是否发布新的内容而已,这都是公开的数据,这不也就是一个简单的自动化嘛,应该在py的能力范围之内。于是又再度尝试去这个功能。

作者能力有限,许多函数都得问GTP用法,主要对py了解到甚少,而且写的py的写法可能也不太规范,希望大家多多指正。这里借用查看学院官网是否发布新的新闻为例,分享一下查看官网是否发布新的内容的一种思路。

第一章、python介绍和使用pip install下载包

第一章的主要简单介绍一下环境,已经有python环境,有一点Python基础的可以直接跳过

1.python介绍

Python 是一种简单而强大的解释型编程语言,具有清晰简洁的语法和丰富的库,广泛应用于 Web 开发、数据分析、人工智能、科学计算等领域。

特点:
- **简洁易读**:Python 的语法非常简单,易于理解和学习,使得代码可读性高。
- **易学易用**:Python 提供了丰富而一致的库,可以轻松完成各种任务,同时有大量的学习资源和社区支持。
- **跨平台**:Python 可以在多个操作系统上运行,包括 Windows、Mac 和 Linux。
- **动态类型**:Python 是一种动态类型语言,不需要显式声明变量类型,可以更快地进行开发和迭代。

可以从官方网站(https://www.python.org)下载 Python 解释器并编写自己的 Python 程序。同时,有许多免费的在线教程和资源可用于学习和提升 Python 编程技能。

下载完python,还需要配置环境变量,关于python下载的,网上已经有许多介绍,当在命令提示符工具输入下列指令,能够正常显示py版本,说明python已经安装完成

python --version

 2.使用vscode编写python

VS Code(Visual Studio Code)是一个免费且功能强大的源代码编辑器,它支持多种编程语言,包括 Python。使用 VS Code 写 Python 对于日常开发非常方便,我再写py代码时,使用的就是vscode。

以下是如何在 VS Code 中写 Python 的简要步骤:

  1. 安装 VS Code:
    首先,你需要在计算机上安装 VS Code。你可以从官方网站(https://code.visualstudio.com)下载适合你操作系统的安装程序,并按照安装向导进行安装。

  2. 安装 Python 扩展:
    打开 VS Code,点击侧边栏的「扩展」图标(四个方块组成的图标),搜索并安装名为 “Python” 的扩展。这个扩展提供了与 Python 相关的功能,例如代码补全、调试等。

  3. 打开 Python 文件夹或创建一个新的 Python 文件:
    在 VS Code 中,你可以打开包含 Python 文件的文件夹,或者创建一个新的 Python 文件。点击「文件」菜单中的「打开文件夹」选项,选择你的 Python 项目所在的文件夹;或者点击「文件」菜单中的「新建文件」选项,然后将文件保存为 .py 扩展名的文件。

  4. 编写 Python 代码:
    在 VS Code 编辑区域中,开始编写你的 Python 代码。VS Code 提供了许多代码编辑功能,例如自动缩进、代码补全、语法高亮等,可以提高编辑的效率和舒适度。

  5. 运行 Python 代码:
    在 VS Code 中,你可以通过按下 Ctrl+Shift+(在 Windows 上)或 Cmd+Shift+(在 macOS 上)来打开集成终端。在终端中输入以下命令来运行 Python 代码:

    python 文件名.py
    

    其中,文件名.py 是你所写的 Python 文件的文件名,运行命令将会执行该文件中的代码。

3.pip install的使用

pip可以快速安装py包,在完成本次任务重,有一些包是电脑上没有的,可以在命令提示符使用pip下载,总之就是运行时提示哪个包没有,就用pip下载哪个包就对了。

要使用 `pip` 安装 Python 包,可以按照以下步骤:

1. 打开终端或命令提示符(Windows 用户可以按下 `Win + R` 键,输入 `cmd` 并按回车键)。
2. 在终端中输入以下命令:

   pip install package_name

   将 `package_name` 替换为你要安装的包的名称。

   例如,如果你想安装 `requests` 包,你可以输入:
   pip install requests

   如果你想安装特定版本的包,可以使用 `==` 符号指定版本号。例如:
   pip install requests==2.25.1

3. 按下回车键执行命令。 `pip` 将会连接到 Python 包索引(PyPI),下载并安装指定的包及其依赖项。

安装完成后,就可以在你的 Python 脚本或解释器中导入并使用安装的包了。

第二章、查看官网是否发布新的内容

其实,这里的“新内容”可以看做是官网上是否发布了“新的网页”,以我们学院的官网链接为例,学院的官网都有许多个栏目,每个栏目下又有许多篇新闻,同一个栏目下的新闻的链接,除了最后一串数字不一样之外,其他都一样;不同栏目下的新闻除了最后一串数字不一样之外,倒数第二串数字也不一样,也就是说,我们如果把最后一串数字记为新闻编号,除了最后一位数字之前的链接,记为链接头部,显然,对于同一个栏目来说,新闻头部都是一样的。那么,我们只需要知道新闻编号,就知道新闻的完整链接了。

如下:

http://phye.henu.edu.cn/info/1054/6370.htm

学院领导走访慰问退休老同志-河南大学物理与电子学院

站在整个官网的角度,所有栏目的新闻拼凑起来,最后一串数字是一个连续的数字,但是由于这些新闻分处在不同的栏目,所以同一个栏目下的新闻编号,大部分情况都不会连续的,但至少可以保证,新的新闻的新闻编号一定比旧新闻的新闻编号大。

因此,检查新内容就可以由检查新发布的网页转化为检查链接头部相同,新闻编号比当前记录的新闻编号大的新闻链接,是否是有效网页来实现。具体写代码时也很简单,只是会用到一些函数,这些函数对于初学者可能都不太了解用法。

第三章、代码实现

代码实现中,主要使用data文件夹下的file.txt来存储新闻编号数据,tools文件夹中实现新闻读取,新闻检查。然后在大目录下设置了main.py以运行整个程序。

目录结构

目录结构如下:

如果你修改目录结构的话,可能需要修改代码里的部分地址。

如果你希望读取其他网站的话,需要在check_new_news.py文件中,修改对应的链接头部,在file.txt内设置当前最新网站的编号(链接的最后一串数字)。当然,这串代码只适用于部分网站,只是提供一个思路。

代码实现

运行时只运行main.py即可

check_new_news.py

from os import system
import requests
from . import files
from . import newsdef check_new_news():num=files.read_integer_data(files.file_path)#从文件中读取新闻编号url_front="http://phye.henu.edu.cn/info/1054/"#新闻链接的“头部”根据需要修改成对应的链接url = f"http://phye.henu.edu.cn/info/1054/{num}.htm"#合成第一个新闻的链接=链接"头部"+新闻编号response = requests.get(url)#读取新闻if response.status_code == 200:#如果读取到了有效的网页print("当前的新闻链接是:"+news.get_news_title(url))#显示当前新闻的题目print(f"{url_front}{num}.htm\n")#显示新闻的链接new_num=num#更新新闻编号数据count_new_news=0#用于记录从上次记录到现在总共有多少新新闻last_num=0for i in range(100):#总共读取从当前记录的新闻编号到当前新闻编号+100的新闻new_num+=1new_url="".join([url_front,str(new_num),".htm"])#合成新的新闻链接new_reponse=requests.get(new_url)#再次读取新闻if(new_reponse.status_code==200):#如果读取到有效的网页count_new_news+=1last_num=new_numprint("有新新闻:"+news.get_news_title(new_url))print(f"{url_front}{new_num}.htm\n")print(f"共有{count_new_news}篇新新闻\n")while count_new_news:#询问是否更新数据is_up_data=str(input("是否需要更新数据(Y/N):"))is_up_data=is_up_data.upper()if is_up_data=="Y":files.update_data(files.file_path,last_num)print(f"更新数据成功,当前data=[{files.read_integer_data(files.file_path)}]")#更新数据到file.txtbreakelif is_up_data=="N":print(f"数据未更新当前data=[{files.read_integer_data(files.file_path)}]")#更新数据到file.txtbreakelse:print("无效的数据,请重新输入")return new_numelse:print(f"error code={num}")#如果没读取到有效的网页,说明:print("无法连接到网页,请检查网络或者files.txt内的默认数据是否有误")return 0

files.py

import os# 获取当前文件所在的目录
current_dir = os.path.dirname(os.path.abspath(__file__))# 拼接文件的路径
file_path = os.path.join(current_dir,"..", "data", "file.txt")# print("文件路径:", file_path)def read_integer_data(file_path):with open(file_path, 'r') as file:data = file.read()# 将文件中的数据转换为整数列表integer_data = [int(num) for num in data.split()]if len(integer_data)==0:print("初始化失败,请检查data/file.txt内的数据是否正常")return 0else:return integer_data[0]def update_data(file_path, new_data):with open(file_path, 'w') as file:file.write(str(new_data))print("数据已更新并写入文件.")
# update_data(file_path,6273)

news.py

from os import system
import requests
from bs4 import BeautifulSoupdef get_news_title(url):response = requests.get(url)response.encoding ="utf_8"html_content = response.textif response.status_code == 200:# 使用 Beautiful Soup 解析网页内容soup = BeautifulSoup(html_content, 'html.parser')# 找到新闻标题元素并提取标题文本news_titles = soup.select_one('div.detail_main_content > h3')#选择新闻在网页中的位置,可能需要自己通过调试查看return "".join(news_titles)else:return "没有找到"
from os import system
from tools import check_new_newscheck_new_news.check_new_news()system("pause")

main.py

from os import system
from tools import check_new_newscheck_new_news.check_new_news()system("pause")

 

file.txt

6370

这是第一次使用python来实现自己的需求,之前也从没系统地学过python,更不懂python代码书写的规范,因此一定有写的不好的地方,希望大家多多指教。

运行演示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Azure 架构师学习笔记】- Azure Databricks (7) --Unity Catalog(UC) 基本概念和组件

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog 前言 在以前的Databricks中,主要由Workspace和集群、SQL Warehouse组成, 这两年Databricks公…

我们在SqlSugar开发框架中,用到的一些设计模式

我们在《SqlSugar开发框架》中,有时候都会根据一些需要引入一些设计模式,主要的目的是为了解决问题提供便利和代码重用等目的。而不是为用而用,我们的目的是解决问题,并在一定的场景下以水到渠成的方式处理。不过引入任何的设计模…

【YOLOX-nano】YOLOX-nano的推理实践

目录 1 pt文件和pth文件的区别 2 安装依赖库 3 模型下载 4 实践 YOLOX-nano.pth模型转换为YOLOX-nano.onnx模型</

SpringBoot对于SpringMVC的支持

创建项目 版本说明这里使用的 SpringBoot 2.0.0.Release SpringBoot对于SpringMVC的支持 在之前的开发中很多场景下使用的是基于xml配置文件或者是Java配置类的方式来进行SpringMVC的配置。一般来讲&#xff0c;初始的步骤如下所示 1、初始化SpringMVC的DispatcherServlet2、…

pytest结合Allure生成测试报告

文章目录 1.Allure配置安装2.使用基本命令报告美化1.**前置条件**2.**用例步骤****3.标题和描述****4.用例优先级**3.进阶用法allure+parametrize参数化parametrize+idsparametrize+@allure.title()4.动态化参数5.环境信息**方式一****方式二**6.用例失败截图1.Allure配置安装 …

Jmeter基础(2) 目录介绍

目录 Jmeter目录介绍bin目录docsextrasliblicensesprintable_docs Jmeter目录介绍 在学习Jmeter之前&#xff0c;需要先对工具的目录有些了解&#xff0c;也会方便后续的学习 bin目录 examplesCSV目录中有CSV样例jmeter.batwindow 启动文件jmeter.shMac/linux的启动文件jmete…

web安全学习笔记【15】——信息打点(5)

信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件 #知识点&#xff1a; 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 ------------------------------------ 1、开源-CMS指…

基于springboot财务管理系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

【C语言必知必会 | 第一篇】C语言入门,这一篇就够了

引言 C语言是一门面向过程的、抽象化的通用程序设计语言&#xff0c;广泛应用于底层开发。它在编程语言中具有举足轻重的地位。 此文为【C语言必知必会】系列第一篇&#xff0c;带你初步了解C语言&#xff0c;为之后的学习打下基础 文章目录 1️⃣发展历史2️⃣语言特点3️⃣语…

论文精读--GPT2

被BERT敲打了&#xff0c;但是仍然坚持解码器架构 Abstract Natural language processing tasks, such as question answering, machine translation, reading comprehension, and summarization, are typically approached with supervised learning on taskspecific dataset…

使用代理IP技术实现爬虫同步获取和保存

概述 在网络爬虫中&#xff0c;使用代理IP技术可以有效地提高爬取数据的效率和稳定性。本文将介绍如何在爬虫中同步获取和保存数据&#xff0c;并结合代理IP技术&#xff0c;以提高爬取效率。 正文 代理IP技术是一种常用的网络爬虫技术&#xff0c;通过代理服务器转发请求&a…

idea和jdk之间对应的版本(idea支持的jdk版本)

idea如果和jdk版本不对应&#xff0c;就会出现无法运行的情况&#xff0c;如下&#xff1a; 翻译&#xff1a;无法确定17的“tools.jar”库的路径&#xff08;C:\Program Files\Java\jdk-17&#xff09; 原因&#xff1a;idea版本是2020.2&#xff0c;而jdk版本是17&#xff0…

动态规划-

关键词&#xff1a; 重叠子问题&#xff1b;每一个状态一定是由上一个状态推导出来(类似数列a^n f(a^n-1,a^n-2)) 步骤&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 题目&#…

01_02_mysql06_(视图-存储过程-函数(变量、流程控制与游标)-触发器)

视图 使用 视图一方面可以帮我们使用表的一部分而不是所有的表&#xff0c;另一方面也可以针对不同的用户制定不同的查询视图。比如&#xff0c;针对一个公司的销售人员&#xff0c;我们只想给他看部分数据&#xff0c;而某些特殊的数据&#xff0c;比如采购的价格&#xff0…

【2024软件测试面试必会技能】Unittest(6):unittest_构建测试套件

构建测试套件 在实际项目中&#xff0c;随着项目进度的开展&#xff0c;测试类会越来越多&#xff0c;可是直到现在我 们还只会一个一个的单独运行测试类&#xff0c;这在实际项目实践中肯定是不可行的&#xff0c;在 unittest中可以通过测试套件来解决该问题。 测试套件&…

目标检测-Transformer-ViT和DETR

文章目录 前言一、ViT应用和结论结构及创新点 二、DETR应用和结论结构及创新点 总结 前言 随着Transformer爆火以来&#xff0c;NLP领域迎来了大模型时代&#xff0c;成为AI目前最先进和火爆的领域&#xff0c;介于Transformer的先进性&#xff0c;基于Transformer架构的CV模型…

C语言深入剖析——函数栈帧的创建与销毁

目录 0.前言 1.什么是函数栈帧 1.1栈帧的组成 1.2栈帧的作用 1.3栈帧的管理 2.理解函数栈帧的作用 3.解析函数栈帧的创建与销毁 3.1栈的介绍 3.2寄存器简介 3.3汇编指令简介 3.4具体过程解析 3.4.1预备知识 3.4.2函数的调用堆栈 3.4.3转到反汇编 3.4.4函数栈帧的…

【Python_Zebra斑马打印机编程学习笔记(一)】实现标贴预览的两种方式

实现标贴预览的两种方式 实现标贴预览的两种方式前言一、调用 Labelary Online ZPL Viewer API 方法实现标贴预览功能1、Labelary Online ZPL Viewer API 案例介绍2、生成 PNG 格式3、Parameters 二、通过 zpl 的 label.preview() 方法实现标贴预览功能1、实现步骤2、代码示例 …

Python实战:读取MATLAB文件数据(.mat文件)

Python实战&#xff1a;读取MATLAB文件数据(.mat文件) &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您的订阅…

R语言【base】——abs(),sqrt():杂项数学函数

Package base version 4.2.0 Description abs(x) 计算 x 的绝对值&#xff0c;sqrt(x) 计算 x 的正平方根。 Usage abs(x) sqrt(x) Arguments 参数【x】&#xff1a;一个数值或复数向量或数组。 Details 这些都是内部泛型原语函数:可以为它们单独定义方法&#xff0c;也可以…