【问题标题】:rvest - find html-node with last page numberrvest - 查找带有最后页码的 html 节点
【发布时间】:2023-03-28 16:58:01
【问题描述】:

我正在学习网络抓取,并为自己创建了一个小练习来抓取食谱网站的所有标题:https://pinchofyum.com/recipes?fwp_paged=1。 (我受到这篇文章的启发:https://www.kdnuggets.com/2017/06/web-scraping-r-online-food-blogs.html)。

我想抓取最后一个页码的值,即(在撰写本文时)第 64 号。您可以在底部找到页数。我看到这是存储为“a.facetwp-page last”,但由于某种原因无法访问此节点。我可以看到页码值存储为“数据页”,但我无法通过“html_attrs”获取此值。

我相信父节点是“div.facetwp-pager”,我可以按如下方式访问该节点:

library(rvest)
pg <- read_html("https://pinchofyum.com/recipes")
html_nodes(pg, "div.facetwp-pager")

但这是据我所知。我想我错过了一些小东西,但无法弄清楚它是什么。我知道 Rselenium,但我想知道是否以及如何使用 rvest 获取最后一页值 (64)。

【问题讨论】:

    标签: html r web-scraping rvest


    【解决方案1】:

    有时使用 rvest 抓取不起作用,尤其是当网页是使用 java 脚本动态生成时(我也无法使用 rvest 抓取此信息)。在这些情况下,您可以使用RSelenium 包。我能够像这样抓取您想要的元素:

    library(RSelenium)
    
    rD <- rsDriver(browser = c("firefox")) #specify browser type you want Selenium to open
    remDr <- rD$client
    remDr$navigate("https://pinchofyum.com/recipes?fwp_paged=1") # navigates to webpage
    
    webElem <- remDr$findElement(using = "css selector", ".last") #find desired element
    
    txt <- webElem$getElementText() # gets us the HTML
    
    #> txt
    #>[[1]]
    #>[1] "64"
    

    【讨论】:

      猜你喜欢
      • 2017-03-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多