我们提供融合门户系统招投标所需全套资料,包括融合系统介绍PPT、融合门户系统产品解决方案、
融合门户系统产品技术参数,以及对应的标书参考文件,详请联系客服。
大家好,今天咱们来聊聊怎么用Python做一个“综合信息门户”和“排行榜”的小项目。听起来是不是有点高大上?其实吧,就是把各种信息集中起来,然后做个排名,再用PPT展示出来,方便汇报或者做报告。

先说说什么是“综合信息门户”。简单来说,就是一个可以展示多个来源信息的平台。比如你有一个网站,里面有很多文章、新闻、视频,或者是一个公司内部的系统,需要把各个部门的数据汇总到一个地方看。这个“门户”就相当于一个入口,所有信息都从这里进去。
那“排行榜”呢?其实就是按某种规则排序的数据列表。比如游戏中的积分榜、电商里的销量榜、或者学习平台上的学习进度排行榜。这些数据通常都是动态变化的,所以需要实时更新。
那我们怎么用Python来做这两个功能呢?接下来我就一步步教大家写代码,顺便也讲讲怎么把这些内容做成PPT,方便展示。
一、准备工作:安装必要的库
首先,我们要用Python来写程序,所以得装好Python环境。然后还需要一些第三方库,比如requests、pandas、flask、jinja2、pyppdf之类的。不过别担心,我一步一步来。
先装requests,用来爬取网页数据;pandas用来处理数据;flask是做一个简单的Web服务;jinja2是用来渲染HTML模板;pyppdf是用来生成PPT文件的。
命令行输入:
pip install requests pandas flask jinja2 pyppdf
如果没装好,可能需要加个--user参数,或者用虚拟环境。不过咱先不纠结这些,先试试看。
二、抓取数据:模拟一个综合信息门户
假设我们要做一个新闻门户,把几个网站的新闻标题、链接、发布时间等信息抓下来,整理成一个表格,然后展示在网页上。
首先,写一个抓取函数,比如抓取知乎、百度新闻、腾讯新闻的头条新闻。

代码如下:
import requests
from bs4 import BeautifulSoup
import pandas as pd
def fetch_news(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
titles = []
links = []
dates = []
# 假设每个新闻标题在class为'news-title'的标签里
for item in soup.find_all('div', class_='news-title'):
titles.append(item.text.strip())
links.append(item.find('a')['href'])
dates.append('2023-08-10') # 这里只是示例时间
return pd.DataFrame({'标题': titles, '链接': links, '时间': dates})
# 抓取不同网站的数据
zhihu_data = fetch_news('https://www.zhihu.com')
baidu_data = fetch_news('https://news.baidu.com')
tencent_data = fetch_news('https://news.qq.com')
# 合并数据
all_news = pd.concat([zhihu_data, baidu_data, tencent_data], ignore_index=True)
print(all_news.head())
这段代码就是抓取三个网站的新闻标题、链接和时间,然后合并成一个DataFrame。你可以根据实际网站结构调整选择器(比如soup.find_all的参数)。
现在,有了这些数据,就可以做一个简单的网页来展示了。我们可以用Flask框架搭建一个本地服务器,显示这些新闻。
接着写一个Flask应用:
from flask import Flask, render_template_string
app = Flask(__name__)
@app.route('/')
def index():
html = '''
<html>
<head><title>综合信息门户</title></head>
<body>
<h1>最新新闻</h1>
<ul>
{% for row in news %}
<li><a href="{{ row['链接'] }}" target="_blank">{{ row['标题'] }}</a> - {{ row['时间'] }}</li>
{% endfor %}
</ul>
</body>
</html>
'''
return render_template_string(html, news=all_news.to_dict(orient='records'))
if __name__ == '__main__':
app.run(debug=True)
运行后,访问http://localhost:5000,就能看到新闻列表了。这就是一个简单的“综合信息门户”了。
三、制作排行榜:按时间排序或点击量排序
现在我们有了一堆新闻数据,但还没排序。那我们来做一个排行榜,按时间排序或者按点击量排序。
假设我们想按时间倒序排列,代码如下:
sorted_news = all_news.sort_values(by='时间', ascending=False)
print(sorted_news[['标题', '时间']].head())
如果你想按点击量排序,那就得从网页上抓取点击量数据。不过这比较复杂,一般我们会自己定义一个“热度”字段,比如每条新闻的点击次数。
或者你可以直接在数据中添加一个“热度”列,比如随机生成一个数字,作为模拟数据。
all_news['热度'] = all_news.index + 100 # 模拟热度
sorted_by_hot = all_news.sort_values(by='热度', ascending=False)
print(sorted_by_hot[['标题', '热度']].head())
这样你就有了一个“排行榜”,可以按不同的维度排序。
四、用PPT展示数据:将结果导出为PPT
现在,我们已经能抓取数据、整理数据、排序数据了。下一步就是把结果用PPT展示出来,方便汇报或者分享。
Python有一个库叫pyppdf,可以生成PPT。不过它的功能有限,也可以用python-pptx库,更强大一些。
先装一下:
pip install python-pptx
然后写一个函数,把排行榜数据生成PPT:
from pptx import Presentation
from pptx.util import Inches
def generate_ppt(data, filename='rank.pptx'):
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
title = slide.shapes.title
title.text = "新闻排行榜"
content = slide.placeholders[1]
content.text = ""
for idx, row in data.iterrows():
content.text += f"{idx+1}. {row['标题']} - 热度: {row['热度']}\n"
prs.save(filename)
print(f"PPT已保存为 {filename}")
generate_ppt(sorted_by_hot)
运行后,就会生成一个名为“rank.pptx”的PPT文件,里面有排行榜的内容。你可以打开它看看效果。
五、整合成一个完整的流程
现在我们已经有了以下步骤:
抓取新闻数据
整理成DataFrame
排序生成排行榜
生成PPT展示
你可以把这个流程封装成一个脚本,每天自动运行一次,抓取最新的新闻,生成PPT,然后发给团队成员或者老板。
比如,你可以设置定时任务,或者用Airflow、Celery等工具调度任务。
六、进阶玩法:加入数据库和Web界面
如果你觉得只用DataFrame太简单,还可以把数据存入数据库,比如MySQL、MongoDB或者SQLite。
比如用sqlite3写一个简单的存储逻辑:
import sqlite3
conn = sqlite3.connect('news.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS news (title TEXT, link TEXT, time TEXT, hot INT)')
for _, row in all_news.iterrows():
cursor.execute('INSERT INTO news VALUES (?, ?, ?, ?)',
(row['标题'], row['链接'], row['时间'], row['热度']))
conn.commit()
conn.close()
之后,你就可以用SQL查询数据,或者用Flask+SQLAlchemy构建一个更完整的Web应用。
七、总结:综合信息门户 + 排行榜 + PPT
今天咱们聊的是怎么用Python做一个“综合信息门户”和“排行榜”系统,并且用PPT展示结果。虽然看起来挺复杂的,但其实只要分步骤来,就能轻松搞定。
关键点有几个:
数据抓取:用requests和BeautifulSoup获取网页内容
数据处理:用pandas整理数据,生成DataFrame
数据排序:用sort_values生成排行榜
结果展示:用Flask创建网页,用python-pptx生成PPT
如果你对编程不太熟悉,也不用怕。跟着教程一步步来,慢慢就能掌握这些技能了。
最后,别忘了把成果用PPT展示出来,这样别人一看就知道你在做什么,还能帮你省不少解释的时间。
好了,今天的分享就到这里。希望对你有帮助!如果有问题,欢迎留言交流~