微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R: Rvest Webscraping 4Chan 目录

如何解决R: Rvest Webscraping 4Chan 目录

我正在尝试使用 4chan 进行政治研究。我对 4chan 目录和以下节点“#threads div.teaser > b”感兴趣。 html_nodes() 工作正常,但是当特定的 <b> TITLE </b> 不存在时没有认值 - 它只是将它可以找到的内容拉入向量中。

这很重要,因为我需要知道特定的 div.teaser 何时没有标题。我真的被困在这里,请参阅下面的代码

library(googlesheets)
library(RSelenium)
library(tidyverse)
library(rvest)
library(xml2)

#Get web driver up
rD <- RSelenium::rsDriver(browser="firefox",port= 4837L)
remDr <- rD[["client"]]
remDr$open() 
remDr$navigate("https://boards.4channel.org/pol/catalog")
webElem <- remDr$findElement("css","body")
webElem$sendKeystoElement(list(key = "end"))

# fetch the html code
remDr$refresh()
soup <- remDr$getPageSource()
soup <- xml2::read_html(soup[[1]])

#obtain titles (not working)
soup %>%  
  if_else(is.null(html_nodes("#threads div.teaser > b")),1)

我收到以下错误

Error: `condition` must be a logical vector,not a `xml_document/xml_node` object.

不过,我认为 is.null() 可以做到这一点。

非常感谢任何帮助。

解决方法

解决方案可能是 TryCatch 函数。

以下可能的解决方案:

    library(googlesheets)
    library(RSelenium)
    library(tidyverse)
    library(rvest)
    library(xml2)
    
    #Get web driver up
    rD <- RSelenium::rsDriver(browser="firefox",port= 4837L)
    remDr <- rD[["client"]]
    remDr$open() 
    remDr$navigate("https://boards.4channel.org/pol/catalog")
    webElem <- remDr$findElement("css","body")
    webElem$sendKeysToElement(list(key = "end"))
    
    # fetch the html code
    remDr$refresh()
    soup <- remDr$getPageSource()
    soup <- xml2::read_html(soup[[1]])
    
    #obtain titles (not working)

    x<-soup %>%  tryCatch( expr = { html_nodes("#threads div.teaser > b")},error = function(e){1})
    print(x)
    [1] 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。