使用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://xiahunao.cn/news/2805435.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

基于飞凌嵌入式RK3568核心板的边缘计算门禁屏解决方案

边缘计算作为一种将计算任务从云端推向网络边缘的新型计算模式,正日益受到各行各业的青睐,并已在我们的生产和生活当中得到了广泛的应用,其中“门禁系统”就是最常见的与边缘计算相结合的应用之一。 传统的门禁系统受限于数据处理能力和网络…

【C语言】详解计算机二级c语言程序题

文章目录 前言资料相关程序题 一(字符串)程序题 二(数组)程序题 三(基础)程序题 四(结构体)程序题 五(结构体)程序题 六(基础) 前言 …

运放的虚短和虚断

上图中,线性区的这条斜线的斜率,就是开环增益(或者叫开环放大倍数),对于理想运放,其开环增益为正无穷,当然对于市面上的运放产品,斜率是不可能无穷大的,一般为几万~几百万…

【区块链】智能交易模式下的数据安全流通模型

【区块链】智能交易模式下的数据安全流通模型 写在最前面**区块链智能交易模式概述****数据安全流通的挑战****数据安全流通模型的核心要素****实现数据安全流通的区块链技术****区块链智能交易模式下数据安全流通模型的设计原则****数据安全流通模型的应用案例分析****面临的挑…

【蓝牙协议栈】btsnoop 概念介绍

1. btsnoop 概念介绍 btsnoop 用于记录蓝牙协议栈跟芯片交互的数据。在分析蓝牙问题的时候有很大的用途,能够快速定位问题所在,一般协议栈都有整合这个或者类似功能,否则我不认为这个协议栈是一个合格的协议栈,在 android 手机中…

高刷电竞显示器 - HKC VG253KM

今天给大家分享一款高刷电竞显示器 - HKC VG253KM。 高刷电竞显示器 - HKC VG253KM源于雄鹰展翅翱翔的设计灵感,严格遵循黄金分割比例的蓝色点晴线条,加上雾面工艺及高低起伏错落有致的线条处理,在VG253KM的背部勾勒出宛若大鹏展翅的鹰翼图腾…

DBeaver的下载安装和连接MySQL数据库

DBeaver的下载安装和连接MySQL数据库 1、dbeaver的下载 dbeaver是一款的数据库连接工具,免费,跨平台。 官网:https://dbeaver.io/ 下载地址:https://dbeaver.io/download/ GitHub下载地址:https://github.com/dbeav…

全面解析企业财务报表系列之四:财务报表的真实性和可靠性

全面解析企业财务报表系列之四:财务报表的真实性和可靠性 一、什么是会计方法二、选择会计方法三、会计方法的重要性四、会计报表常用的造假手段五、财务报表经常被遗漏的重要事件六、财务报告造假的资信敏感性七、财务报告审计的重要性八、审计报告 一、什么是会计…

更简单地介绍 CUDA

这篇文章是对 CUDA 的超级简单介绍,CUDA 是 NVIDIA 流行的并行计算平台和编程模型。我之前在2013年写过一篇文章《CUDA简单介绍》,多年来一直很受欢迎。但 CUDA 编程变得更加容易,GPU 也变得更快,所以是时候进行更新(甚…

家政小程序开发:帮助企业打造专属品牌,提升知名度

随着当下消费观念的升级,人口老龄化的严重,家政服务成为当下年轻人的必不可少的选择,我国家政服务市场的发展前景非常广阔。 如今,消费者对家政的需求日益多样化,家政市场数字化转型将成为一大发展趋势。在互联网等信…

第七章 本地方法栈

第七章 本地方法栈 1. 本地方法栈 Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法(第六章本地方法)的调用。本地方法栈,也是线程私有的。允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的) 如果线程请求分配的…

2024-2-22 作业

作业要求: 复习前面知识点(指针、结构体、函数)整理思维导图顺序表(按位置插入、按位置删除和去重、重新写)理解链表的代码,尝试写一下链表的尾插和输出 1.复习前面知识点(指针、结构体、函数) 2.整理思维导图 3.顺序表(按位置插入、按位置删除和去重、…

PyTorch概述(六)---View

Tensor.view(*shape)-->Tensor 返回一个新的张量同之前的张量具有相同的数据,但是具有不同的形状;返回的张量同之前的张量共享相同的数据,必须具有相同数目的元素,可能具有不同的形状;对于经过view操作的张量&…

2024Node.js零基础教程(小白友好型),nodejs新手到高手,(八)NodeJS入门——http模块

一念心清净,处处莲花开。 055_http模块_网页资源加载基本过程 哈喽,大家好,这一课节我们来介绍一下网页资源加载的基本过程。首先先强调一点,这个内容对于我们后续学习非常非常的关键,所以大家务必要将其掌握。 首先先…

llm的inference(一)

文章目录 前提LLMLLM结构1.Encoder-only2.Encoder-Decoder3.Decoder-only 宏观层面的LLM推理过程宏观推理过程的进一步详细说明从字符串输入到网络的输出 总结参考链接 前提 对LLM(大语言模型)的推理不太清楚,自己把遇到的和推理相关的知识做个总结,如有…

Autoencoder深度学习中的无监督学习神经网络

在当今的深度学习领域中,自动编码器(Autoencoder)是一种常见的无监督学习神经网络模型,用于学习有效的数据表示。自动编码器在许多领域都有广泛的应用,包括特征提取、降维、图像去噪、生成模型等。 自动编码器的基本原…

Servlet使用Cookie和Session

一、会话技术 当用户访问web应用时,在许多情况下,web服务器必须能够跟踪用户的状态。比如许多用户在购物网站上购物,Web服务器为每个用户配置了虚拟的购物车。当某个用户请求将一件商品放入购物车时,web服务器必须根据发出请求的…

Danswer-开源统一搜索,用AI与您的文档聊天

简介 Danswer允许您以自然语言提问并根据您团队的特定文档获取答案。如果 ChatGPT 能够访问您团队的独特知识。连接到所有常见的工作场所工具,例如 Slack、Google Drive、Confluence 等。 优势 加快客户支持和升级时间。通过使文档和代码变更日志易于查找来提高工…

openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议

文章目录 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 目前LLVM在数据库内核侧已默认打开,用户可结合上述的分析进行配置,总体建议如下: 设置合理的wor…

谷歌搜索引擎关键词优化,竞价排名怎么做?大舍传媒

公司 大舍传媒成立于2005年,并从那时开始专注于谷歌搜索引擎优化(SEO)。如今,我们已经拥有了十八年的海外数字营销经验。我们为全球数千个国际知名品牌客户提供服务,是一家专注于技术的公司。 谷歌排名成果 在谷歌&…