Как извлечь данные из категории Digida: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) Новая страница: «{{Scripting Tutorials |Description=Мы хотим проанализировать тексты, которые хранятся в статья определенной категории поля цифровой дидактики. Есть 2 способа - экспорт статей и использование MediaWiki API |Field_of_knowledge=Лингвистика, Статистика |Возрастная категория=16 |Environment=R, S...» |
Patarakin (обсуждение | вклад) Нет описания правки |
||
| Строка 5: | Строка 5: | ||
|Environment=R, Semantic MediaWiki, MediaWiki API | |Environment=R, Semantic MediaWiki, MediaWiki API | ||
}} | }} | ||
== Использовать Экспорт статей == | |||
Воспользоваться [[Служебная:Экспорт]] и скачать все статьи из категории | |||
== Использовать R == | |||
<syntaxhighlight lang="R" line> | |||
library(httr2) | |||
library(jsonlite) | |||
library(tidyverse) | |||
library(ggplot2) | |||
library(quanteda) | |||
library(stopwords) | |||
getwd() | |||
base_url <- "http://digida.mgpu.ru/api.php" | |||
ua <- "digida-research-bot/0.1 (contact: patarakined@mgpu.ru)" ## Agent | |||
############# | |||
get_category_pages <- function(category_name, limit = 500) { | |||
params <- list( | |||
action = "query", | |||
list = "categorymembers", | |||
cmtitle = paste0("Category:", category_name), | |||
cmlimit = limit, | |||
cmtype = "page", | |||
format = "json" | |||
) | |||
response <- request(base_url) %>% | |||
req_headers( | |||
`User-Agent` = ua, | |||
`Api-User-Agent` = ua | |||
) %>% | |||
req_url_query(!!!params) %>% | |||
req_perform() | |||
data <- resp_body_string(response) %>% fromJSON() | |||
return(data$query$categorymembers) # оставить | |||
} | |||
################# | |||
get_page_content <- function(page_title) { | |||
params <- list( | |||
action = "query", | |||
titles = page_title, | |||
prop = "revisions", | |||
rvprop = "content", | |||
format = "json" | |||
) | |||
response <- request(base_url) %>% | |||
req_headers( | |||
`User-Agent` = ua, | |||
`Api-User-Agent` = ua | |||
) %>% | |||
req_url_query(!!!params) %>% | |||
req_perform() | |||
data <- resp_body_string(response) %>% fromJSON() | |||
pages_data <- data$query$pages | |||
page_info <- pages_data[[1]] | |||
if (!is.null(page_info$revisions) && nrow(page_info$revisions) > 0) { | |||
page_text <- page_info$revisions$`*`[1] | |||
} else { | |||
page_text <- NA | |||
} | |||
result <- list( | |||
pageid = page_info$pageid, | |||
title = page_info$title, | |||
content = page_text | |||
) | |||
return(result) # оставить | |||
} | |||
</syntaxhighlight> | |||
Версия от 19:07, 8 декабря 2025
| Описание | Мы хотим проанализировать тексты, которые хранятся в статья определенной категории поля цифровой дидактики. Есть 2 способа - экспорт статей и использование MediaWiki API |
|---|---|
| Область знаний | Лингвистика, Статистика |
| Область использования (ISTE) | |
| Возрастная категория | 16
|
| Поясняющее видео | |
| Близкие рецепту понятия | |
| Среды и средства для приготовления рецепта: | R, Semantic MediaWiki, MediaWiki API |
Использовать Экспорт статей
Воспользоваться Служебная:Экспорт и скачать все статьи из категории
Использовать R
library(httr2)
library(jsonlite)
library(tidyverse)
library(ggplot2)
library(quanteda)
library(stopwords)
getwd()
base_url <- "http://digida.mgpu.ru/api.php"
ua <- "digida-research-bot/0.1 (contact: patarakined@mgpu.ru)" ## Agent
#############
get_category_pages <- function(category_name, limit = 500) {
params <- list(
action = "query",
list = "categorymembers",
cmtitle = paste0("Category:", category_name),
cmlimit = limit,
cmtype = "page",
format = "json"
)
response <- request(base_url) %>%
req_headers(
`User-Agent` = ua,
`Api-User-Agent` = ua
) %>%
req_url_query(!!!params) %>%
req_perform()
data <- resp_body_string(response) %>% fromJSON()
return(data$query$categorymembers) # оставить
}
#################
get_page_content <- function(page_title) {
params <- list(
action = "query",
titles = page_title,
prop = "revisions",
rvprop = "content",
format = "json"
)
response <- request(base_url) %>%
req_headers(
`User-Agent` = ua,
`Api-User-Agent` = ua
) %>%
req_url_query(!!!params) %>%
req_perform()
data <- resp_body_string(response) %>% fromJSON()
pages_data <- data$query$pages
page_info <- pages_data[[1]]
if (!is.null(page_info$revisions) && nrow(page_info$revisions) > 0) {
page_text <- page_info$revisions$`*`[1]
} else {
page_text <- NA
}
result <- list(
pageid = page_info$pageid,
title = page_info$title,
content = page_text
)
return(result) # оставить
}
