Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/liugddx/info_collect
一个基于 Python 和 Flask 构建的信息收集工具,用于自动聚合来自多个主流网站的文章。该工具支持关键词检索、查看文章来源、每日推荐最热文章,并提供友好的用户界面。通过插件化设计,您可以轻松扩展和集成更多的数据源。
https://github.com/liugddx/info_collect
collection news wiki
Last synced: 3 days ago
JSON representation
一个基于 Python 和 Flask 构建的信息收集工具,用于自动聚合来自多个主流网站的文章。该工具支持关键词检索、查看文章来源、每日推荐最热文章,并提供友好的用户界面。通过插件化设计,您可以轻松扩展和集成更多的数据源。
- Host: GitHub
- URL: https://github.com/liugddx/info_collect
- Owner: liugddx
- Created: 2024-12-04T06:35:09.000Z (about 1 month ago)
- Default Branch: master
- Last Pushed: 2024-12-26T06:29:10.000Z (15 days ago)
- Last Synced: 2024-12-26T07:31:36.146Z (15 days ago)
- Topics: collection, news, wiki
- Language: Python
- Homepage:
- Size: 11.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 信息收集工具
一个基于 Python 和 Flask 构建的信息收集工具,用于自动聚合来自多个主流网站的文章。该工具支持关键词检索、查看文章来源、每日推荐最热文章,并提供友好的用户界面。通过插件化设计,您可以轻松扩展和集成更多的数据源。
## 目录
- [功能](#功能)
- [项目结构](#项目结构)
- [安装](#安装)
- [配置](#配置)
- [使用指南](#使用指南)
- [运行数据收集器](#运行数据收集器)
- [运行 Web 应用](#运行-web-应用)
- [添加新插件](#添加新插件)
- [依赖](#依赖)
- [许可证](#许可证)## 功能
- **自动收集文章**:通过插件从多个主流来源抓取文章。
- **关键词检索**:根据用户输入的关键词搜索相关性文章。
- **查看文章来源**:浏览所有可用的文章来源并查看特定来源的文章。
- **每日推荐**:展示每日最热的文章推荐。
- **插件化设计**:支持通过插件轻松集成新的数据源。
- **用户界面**:基于 Bootstrap 的简洁、响应式网页界面。## 项目结构
```
your_project/
│
├── app.py
├── collect_data.py
├── models.py
├── requirements.txt
├── plugins/
│ ├── __init__.py
│ ├── base_plugin.py
│ ├── plugin_manager.py
│ ├── rss_plugin.py
│ ├── web_scraper_plugin.py
│ └── new_source_plugin.py
├── templates/
│ ├── base.html
│ ├── home.html
│ ├── search.html
│ ├── sources.html
│ └── source_articles.html
└── static/
└── (可选静态文件,如 CSS、JS)
```## 安装
### 1. 克隆仓库
```bash
git clone https://github.com/yourusername/your_project.git
cd your_project
```### 2. 创建虚拟环境
```bash
python3 -m venv env
```### 3. 激活虚拟环境
- **Windows**
```bash
env\Scripts\activate
```- **macOS/Linux**
```bash
source env/bin/activate
```### 4. 安装依赖
```bash
pip install -r requirements.txt
```## 配置
### 1. 配置新插件
如果您使用 `new_source_plugin.py`(或其他需要 API 密钥的插件),请确保在插件代码中替换占位符 `'YOUR_API_KEY'` 为实际的 API 密钥。
例如,在 `plugins/new_source_plugin.py` 中:
```python
self.api_key = 'YOUR_ACTUAL_API_KEY'
```### 2. 修改 RSS 源(可选)
默认的 RSS 插件抓取 BBC News 和 CNN 的 RSS 源。如需添加或修改,可以编辑 `plugins/rss_plugin.py` 中的 `self.rss_urls` 列表:
```python
self.rss_urls = [
'https://feeds.bbci.co.uk/news/rss.xml', # BBC News
'http://rss.cnn.com/rss/edition.rss' # CNN
]
```## 使用指南
### 1. 运行数据收集器
数据收集器负责定时抓取文章并存储到数据库中。
```bash
python collect_data.py
```此脚本会:
- 初始化数据库(`articles.db`)。
- 立即抓取一次所有已配置的数据源的文章。
- 每天早上 8 点自动抓取最新文章。**注意**:为了在后台长期运行数据收集器,建议使用像 `screen`、`tmux` 或 `nohup` 这样的工具,或者配置系统服务。
### 2. 运行 Web 应用
启动 Flask Web 服务器,访问用户界面。
```bash
python app.py
```默认情况下,应用将在 `http://127.0.0.1:5000/` 上运行。打开浏览器访问该地址即可查看和搜索文章。
## 添加新插件
通过插件系统,您可以轻松集成新的数据源。以下是添加新插件的步骤:
### 1. 创建新的插件文件
在 `plugins/` 目录下创建一个新的 Python 文件,例如 `my_new_plugin.py`。
### 2. 实现插件类
每个插件需要继承自 `BasePlugin` 并实现 `fetch_articles` 方法。
```python
# plugins/my_new_plugin.py
import requests
from datetime import datetime
from plugins.base_plugin import BasePluginclass MyNewPlugin(BasePlugin):
def __init__(self):
self.api_endpoint = 'https://api.example.com/articles' # 替换为实际API端点
self.api_key = 'YOUR_API_KEY' # 替换为实际API密钥
self.source = 'MyNewSource'def fetch_articles(self):
response = requests.get(self.api_endpoint, params={'apiKey': self.api_key})
data = response.json()
articles = []
for item in data.get('articles', []):
try:
published_at = datetime.strptime(item['publishedAt'], '%Y-%m-%dT%H:%M:%SZ')
except (ValueError, KeyError):
published_at = datetime.utcnow()
article = {
'title': item['title'],
'description': item.get('description', ''),
'url': item['url'],
'source': self.source,
'publishedAt': published_at
}
articles.append(article)
return articles
```### 3. 重新加载插件
要使新插件生效,可以通过访问 Web 应用中的 `/rebuild_plugins` 路由来重新加载插件:
```
http://127.0.0.1:5000/rebuild_plugins
```或者重新运行 `collect_data.py` 脚本,插件管理器会自动加载新插件。
## 依赖
项目使用以下主要依赖:
- **Flask**:Web 框架
- **Flask_SQLAlchemy**:数据库 ORM
- **requests**:HTTP 请求
- **beautifulsoup4**:网页解析
- **schedule**:任务调度
- **feedparser**:RSS 解析详细依赖列表见 `requirements.txt`。