使用 R 中的 rvest 仅抓取最新博客 post
Scraping only the NEWEST blog post with rvest in R
我正在使用 rvest
抓取博客页面的 .txt
文件,我有一个每天触发的脚本,抓取最新的 post。该脚本的基础是一个 lapply
函数,它简单地抓取所有 post,我稍后使用 Apache NiFi
整理重复项。
这不是一种对重复项进行排序的有效方法,所以我想知道是否有一种方法可以使用相同的脚本,并且只抓取最新的 posts?
post 标有向上计数的数字,例如 BLOG001
、BLOG002
等。我想放一行代码确保抓取最新的 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)
我正在使用 rvest
抓取博客页面的 .txt
文件,我有一个每天触发的脚本,抓取最新的 post。该脚本的基础是一个 lapply
函数,它简单地抓取所有 post,我稍后使用 Apache NiFi
整理重复项。
这不是一种对重复项进行排序的有效方法,所以我想知道是否有一种方法可以使用相同的脚本,并且只抓取最新的 posts?
post 标有向上计数的数字,例如 BLOG001
、BLOG002
等。我想放一行代码确保抓取最新的 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)