Очистка только самого нового сообщения в блоге с rvest в R - PullRequest
0 голосов
/ 11 февраля 2019

Я использую rvest, чтобы очистить файлы .txt страницы блога, и у меня есть скрипт, который запускается каждый день и очищает самую новую запись.Основой этого скрипта является функция lapply, которая просто очищает все сообщения, и позже я перебираю дубликаты, используя Apache NiFi.

Это не эффективный способ сортировки дубликатов, поэтому мне было интересно, есть ли способ использовать тот же сценарий, и только чистить самые новые сообщения?

Сообщения помечены номерами, которые считаютсявверх, например BLOG001, BLOG002 и т. д. Я хочу поместить строку кода, которая гарантирует очистку самых новых сообщений (они могут опубликовать несколько сообщений в любой день).Как мне убедиться, что у меня только BlOG002, а при следующем запуске только BLOG003 и т. Д.?

library(tidyverse)
library(rvest)

# URL set up
url <- "https://www.example-blog/posts.aspx"
page <- html_session(url, config(ssl_verifypeer = FALSE))

# Picking elements
links <- page %>% 
  html_nodes("td") %>% 
  html_nodes("a") %>% 
  html_attr("href") 

# Function 
out <- Map(function(ln) {

fun1 <- html_session(URLencode(
  paste0("https://www.example-blog", ln)),
  config(ssl_verifypeer = FALSE))

writeBin(fun1$response$content)

return(fun1$response$content)

}, links)

1 Ответ

0 голосов
/ 11 февраля 2019

Предполагая, что все ссылки, которые вы хотите, начинаются с 'BLOG', как в вашем посте, и вы хотите загружать только те, которые имеют максимальное количество, каждый раз, когда запускается код.Вы можете попробовать что-то подобное, чтобы достичь этого.

library(tidyverse)
library(rvest)

# URL set up
url <- "https://www.example-blog/posts.aspx"
page <- html_session(url, config(ssl_verifypeer = FALSE))

# Picking elements
links <- page %>% 
  html_nodes("td") %>% 
  html_nodes("a") %>% 
  html_attr("href")

# Make sure only 'BLOG' links are checked
links <- links[substr(links, 1, 4) == 'BLOG']

# Get numeric value from link
blog.nums <- as.numeric(substr(links, 5, nchar(links)))

# Get the maximum link value
max.link <- links[which(blog.nums == max(blog.nums))]

fun1 <- html_session(URLencode(
  paste0("https://www.example-blog", max.link)),
  config(ssl_verifypeer = FALSE))

writeBin(fun1$response$content)
...