使用 R 中的 rvest 仅抓取最新博客 post

Scraping only the NEWEST blog post with rvest in R

我正在使用 rvest 抓取博客页面的 .txt 文件,我有一个每天触发的脚本,抓取最新的 post。该脚本的基础是一个 lapply 函数,它简单地抓取所有 post,我稍后使用 Apache NiFi 整理重复项。

这不是一种对重复项进行排序的有效方法,所以我想知道是否有一种方法可以使用相同的脚本,并且只抓取最新的 posts?

post 标有向上计数的数字,例如 BLOG001BLOG002 等。我想放一行代码确保抓取最新的 post 个(他们可能 post 在任何一天都有几个)。如何确保我只得到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)

假设您想要的所有链接都以 'BLOG' 开头,如您的 post,并且每次代码为 运行 时您只想下载最大数量的链接].你可以尝试这样的事情来实现这一点。

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)