Alle Wordpress-Posts als JSON mit Python & der Wordpress-REST-API abrufen
English
Deutsch
In unserem vorherigen Beitrag How to get WordPress posts as JSON using Python & the WordPress REST API haben wir gezeigt, wie man eine einzelne Seite mit 10 Posts über die Wordpress-REST-API in Python abruft.
In diesem Beitrag verwenden wir die Paginierung, um eine Liste aller Posts abzurufen.
Zuerst beobachten wir, dass wenn wir eine ungültige Seite wie ?page=1000000 abfragen, das zurückgegebene JSON wie folgt aussieht:
wp_posts_error.json
{'code': 'rest_post_invalid_page_number',
'message': 'The page number requested is larger than the number of pages available.',
'data': {'status': 400}}anstelle des JSON-Arrays, das die Liste der Posts darstellt.
Mit diesen Informationen können wir einen Fetcher schreiben, der jeweils Seiten mit 100 Posts abruft, bis diese Fehlermeldung auftritt:
fetch_all_posts.py
from tqdm import tqdm
import requests
def page_numbers():
"""Endloser Generator von Seitenzahlen"""
num = 1
while True:
yield num
num += 1
posts = []
for page in tqdm(page_numbers()):
# Die nächsten [pagesize=10] Posts abrufen
posts_page = requests.get("https://mydomain.com/wp-json/wp/v2/posts", params={"page": page, "per_page": 100}).json()
# Auf "letzte Seite"-Fehlercode prüfen
if isinstance(posts_page, dict) and posts_page["code"] == "rest_post_invalid_page_number": # Found last page
break
# Kein Fehlercode -> Posts hinzufügen
posts += posts_pageIf this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow