Hello world!
November 1, 2020wordpress中好用的markdown编辑器
February 12, 2025在 WordPress 中使用 Python 定时抓取数据并展示,涉及到定时任务、数据存储以及前端展示等多个步骤。以下是常见的几种方法,包含从简单到复杂的实现方案。
1. 使用 REST API 将数据推送到 WordPress
适用场景:如果你想用 Python 抓取数据并直接更新到 WordPress 的文章或自定义字段中。
步骤:
-
在 WordPress 中启用 REST API(默认启用)
WordPress 自带 REST API,可以通过 API 直接创建或更新文章。 -
生成应用密码(用于身份验证)
- 进入 WordPress 后台 → 用户 → 个人资料。
- 找到 应用密码,生成新的密码,保存好这个密码。
-
Python 脚本推送数据到 WordPress:
import requests from requests.auth import HTTPBasicAuth # WordPress 站点信息 wp_url = "https://yourwordpresssite.com/wp-json/wp/v2/posts" username = "your_username" app_password = "your_app_password" # 定义要推送的数据 data = { "title": "域名注册商最新数据", "content": "这里是抓取的域名注册商数据: ...", "status": "publish" # 发布文章 } # 发送 POST 请求 response = requests.post(wp_url, auth=HTTPBasicAuth(username, app_password), json=data) if response.status_code == 201: print("数据已成功推送到 WordPress!") else: print(f"推送失败,状态码:{response.status_code}")
-
定时任务设置(每小时运行)
- Windows:使用 任务计划程序 设置定时任务。
- Linux/Unix:使用 cron 设置定时任务:
0 * * * * /usr/bin/python3 /path/to/your/script.py
2. 使用 WordPress 插件调用外部 Python API
适用场景:如果你希望 Python 脚本在独立服务器上运行,提供数据 API,WordPress 前端调用这个 API 显示数据。
步骤:
-
用 Flask 搭建 Python API 服务:
from flask import Flask, jsonify app = Flask(__name__) @app.route('/domain-data', methods=['GET']) def get_data(): data = { "registrars": [ {"name": "EuroDNS", "price": "$12.66"}, {"name": "Hover", "price": "$19.17"}, # 更多数据... ] } return jsonify(data) if __name__ == "__main__": app.run(host='0.0.0.0', port=5000)
-
部署 Python API 到服务器
将上述 API 部署到服务器上,确保外网可以访问,例如http://yourserver.com:5000/domain-data
。 -
WordPress 使用插件调用 API:
- 安装插件 WP Get API 或 WP REST API Controller。
- 在插件设置中,配置 Python API 的地址。
-
在页面或文章中嵌入短代码显示数据:
[get_api_data endpoint="http://yourserver.com:5000/domain-data"]
3. 使用 Python 将数据保存到 MySQL,WordPress 读取数据库
适用场景:如果你的 WordPress 和 Python 项目共享同一个数据库,可以直接将抓取的数据写入数据库,然后在 WordPress 前端展示。
步骤:
-
用 Python 抓取数据并写入 MySQL 数据库:
import mysql.connector # 连接到 MySQL 数据库(假设 WordPress 使用同一个数据库) conn = mysql.connector.connect( host="localhost", user="your_db_user", password="your_db_password", database="your_wordpress_db" ) cursor = conn.cursor() # 插入数据到自定义表(确保创建了相应表格) query = "INSERT INTO wp_domain_data (registrar, price) VALUES (%s, %s)" data = [("EuroDNS", "$12.66"), ("Hover", "$19.17")] cursor.executemany(query, data) conn.commit() cursor.close() conn.close()
-
在 WordPress 中读取数据库并展示:
在主题的
functions.php
文件或自定义插件中添加以下代码:function display_domain_data() { global $wpdb; $results = $wpdb->get_results("SELECT * FROM wp_domain_data"); $output = '<ul>'; foreach ($results as $row) { $output .= '<li>' . esc_html($row->registrar) . ' - ' . esc_html($row->price) . '</li>'; } $output .= '</ul>'; return $output; } add_shortcode('domain_data', 'display_domain_data');
-
在页面或文章中使用短代码:
[domain_data]
4. 使用 WordPress 自定义插件整合 Python
适用场景:如果你希望将 Python 的功能完全整合到 WordPress 中,可以编写一个自定义插件,调用 Python 脚本。
步骤:
-
创建自定义插件文件:
在
wp-content/plugins/
目录下创建一个新文件夹,例如python-data-fetcher
,并在里面创建python-data-fetcher.php
:
'; } add_shortcode('fetch_python_data', 'fetch_python_data');<?php /* Plugin Name: Python Data Fetcher Description: 定时调用 Python 脚本抓取数据并展示在 WordPress 中。 Version: 1.0 */ function fetch_python_data() { $output = shell_exec('python3 /path/to/your/script.py'); return '<pre>' . esc_html($output) . '
-
在 WordPress 中启用插件
进入 WordPress 后台 → 插件 → 启用 Python Data Fetcher。 -
在页面或文章中使用短代码:
[fetch_python_data]
5. 使用 WP-Cron 定时任务和 Python 配合
适用场景:如果你希望完全通过 WordPress 定时任务管理数据更新,可以使用 WP-Cron 结合 Python 脚本。
步骤:
-
在
functions.php
中添加定时任务:if (!wp_next_scheduled('update_domain_data_event')) { wp_schedule_event(time(), 'hourly', 'update_domain_data_event'); } add_action('update_domain_data_event', 'run_python_script'); function run_python_script() { shell_exec('python3 /path/to/your/script.py'); }
-
Python 脚本负责更新 WordPress 数据库或生成静态文件供 WordPress 读取。
总结:
方法 | 描述 | 适用场景 |
---|---|---|
REST API 推送数据 | 使用 Python 脚本调用 WordPress REST API | 直接在 WordPress 中发布或更新文章数据 |
WordPress 插件调用 API | Python 部署 API,WP 使用插件获取数据 | 数据保存在独立服务器,WordPress 动态调用 |
MySQL 共享数据库 | Python 写入数据库,WordPress 读取 | WordPress 和 Python 共享数据库 |
自定义插件整合 Python | 创建 WP 插件,直接调用 Python 脚本 | 深度集成 Python 功能到 WordPress 中 |
WP-Cron 定时任务 | WordPress 定时调用 Python 脚本 | 通过 WP 定时任务自动更新数据 |
选择最适合你项目需求的方法。如果有具体的实施问题或需要示例代码的详细解释,随时告诉我! 😊