如何使用 rvest 从 html 中提取最大页码
How to extract max page number from html using rvest
我在提取页面底部的 max/last 页码时遇到问题。当我尝试下面的代码时,我不明白我做错了什么。我的目标是提取唯一的数字(目前是 96),如果这不可能,那么至少提取包含最后页码的 href(我可以从中获取数字)。
#Example Page
page <- read_html("https://www.yachtworld.com/boats-for-sale/condition-used/type-sail/sort-price:asc/?currency=CAD&year=1990-2018&length=38-45&price=0-200000")
page %>% html_nodes(".nav-next") %>% html_attr("href") #my attempt to extract the number 96
page %>% html_nodes(".search-page-nav a") %>% html_attr("href") #my attempt to extract the href
{xml_nodeset (0)} #this is what is returned in both cases
SelectorGadget 突出显示所需的节点。
我想从检查源中获得的块。
分页要求页面上 Javascript 到 运行 才能显示。 rvest 不会发生这种情况。相反,一种方法是根据存在的文本计算页数,即每页的结果数和总结果数。
library(magrittr)
library(rvest)
library(stringr)
page <- read_html('https://www.yachtworld.com/boats-for-sale/condition-used/type-sail/sort-price:asc/?currency=CAD&year=1990-2018&length=38-45&price=0-200000&page=1')
result_text <- page %>% html_node('.page-selector-text') %>% html_text()
results_per_page <- result_text %>% stringr::str_match('- (\d+)') %>% .[2] %>% as.integer()
num_results <- result_text %>% stringr::str_match('of ([0-9,]+)') %>% .[2] %>% gsub(',','', .) %>% as.integer()
num_pages <- ceiling(num_results/results_per_page)
print(num_pages)
我在提取页面底部的 max/last 页码时遇到问题。当我尝试下面的代码时,我不明白我做错了什么。我的目标是提取唯一的数字(目前是 96),如果这不可能,那么至少提取包含最后页码的 href(我可以从中获取数字)。
#Example Page
page <- read_html("https://www.yachtworld.com/boats-for-sale/condition-used/type-sail/sort-price:asc/?currency=CAD&year=1990-2018&length=38-45&price=0-200000")
page %>% html_nodes(".nav-next") %>% html_attr("href") #my attempt to extract the number 96
page %>% html_nodes(".search-page-nav a") %>% html_attr("href") #my attempt to extract the href
{xml_nodeset (0)} #this is what is returned in both cases
SelectorGadget 突出显示所需的节点。
我想从检查源中获得的块。
分页要求页面上 Javascript 到 运行 才能显示。 rvest 不会发生这种情况。相反,一种方法是根据存在的文本计算页数,即每页的结果数和总结果数。
library(magrittr)
library(rvest)
library(stringr)
page <- read_html('https://www.yachtworld.com/boats-for-sale/condition-used/type-sail/sort-price:asc/?currency=CAD&year=1990-2018&length=38-45&price=0-200000&page=1')
result_text <- page %>% html_node('.page-selector-text') %>% html_text()
results_per_page <- result_text %>% stringr::str_match('- (\d+)') %>% .[2] %>% as.integer()
num_results <- result_text %>% stringr::str_match('of ([0-9,]+)') %>% .[2] %>% gsub(',','', .) %>% as.integer()
num_pages <- ceiling(num_results/results_per_page)
print(num_pages)