Как извлечь данные из категории Digida: различия между версиями

Материал из Поле цифровой дидактики
Новая страница: «{{Scripting Tutorials |Description=Мы хотим проанализировать тексты, которые хранятся в статья определенной категории поля цифровой дидактики. Есть 2 способа - экспорт статей и использование MediaWiki API |Field_of_knowledge=Лингвистика, Статистика |Возрастная категория=16 |Environment=R, S...»
 
Нет описания правки
Строка 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)  # оставить
}