В этой статье блога мы рассмотрим различные подходы к извлечению списка страниц, основанных на определенном шаблоне. Независимо от того, являетесь ли вы разработчиком, желающим оптимизировать управление своим веб-сайтом, или создателем контента, стремящимся систематизировать свой сайт, эти методы помогут вам достичь вашей цели. Мы рассмотрим ряд методов, дополненных разговорными объяснениями и примерами кода, чтобы сделать процесс понятным и доступным.
Метод 1: использование API MediaWiki с Action=query
API MediaWiki — это мощный инструмент для взаимодействия с веб-сайтами на основе MediaWiki, такими как Википедия. Используя модуль action=query
, вы можете получить список страниц с определенным шаблоном. В следующем примере показано, как этого добиться в Python:
import requests
url = "https://en.wikipedia.org/w/api.php"
params = {
"action": "query",
"format": "json",
"list": "embeddedin",
"eititle": "Template:YourTemplate",
"eilimit": "max"
}
response = requests.get(url, params=params)
data = response.json()
pages = data["query"]["embeddedin"]
for page in pages:
print(page["title"])
Метод 2: использование расширения Semantic MediaWiki
Если на вашем веб-сайте используется расширение Semantic MediaWiki, вы можете воспользоваться его мощными возможностями запросов. Используя функцию парсера #ask
, вы можете извлечь список страниц с определенным шаблоном. Вот пример:
{{#ask:
[[Category:YourCategory]]
[[YourTemplate::+]]
|format = ul
|limit = 100
}}
Метод 3: использование запроса к базе данных
Если у вас есть прямой доступ к базе данных веб-сайта, вы можете выполнить запрос для получения необходимой информации. Предполагая, что у вас есть база данных MySQL, можно использовать следующий SQL-запрос:
SELECT page_title
FROM your_table_name
WHERE page_content LIKE '%{{YourTemplate}}%';
Метод 4: использование библиотеки веб-скрапинга
Если описанные выше методы неприменимы или вы предпочитаете более гибкий подход, вы можете использовать библиотеку веб-скрапинга, например BeautifulSoup в Python, для извлечения необходимой информации. Фрагмент кода ниже демонстрирует, как это сделать:
import requests
from bs4 import BeautifulSoup
url = "https://yourwebsite.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
pages = soup.find_all("div", {"class": "your-template-class"})
for page in pages:
print(page.text)