我想抓取此页面上的广告链接:https://reality.idnes.cz/s/?page=1 使用 R、rvest 和 httr 包。它返回的结果我不明白。
代码是:
link <- "https://reality.idnes.cz/s/?page=1"
response <- httr::GET(link)
page <- rvest::read_html(response)
在上面的代码中,我得到了“response”对象的正确返回码200,但是调用read_html()后的“page”对象几乎是空的,它不包含网页内容。
当我这样做时:
object.size(response)
结果是这样的:
132464 bytes
所以这个对象包含数据,看起来是正确的。但当我这样做时:
object.size(page)
结果是:
784 bytes
如果我直接调用 read_html(link),结果对象大小也是相同的 784 字节。 为什么“page”对象几乎为空,调用时会发生什么 “页面<- rvest::read_html(response) ?"
提前非常感谢您的帮助。
那是因为
page
是一个指向内存的包装指针。 R 中的该变量不包含所有数据。它指向存储数据的内存。
str(page)
# List of 2
# $ node:<externalptr>
# $ doc :<externalptr>
# - attr(*, "class")= chr [1:2] "xml_document" "xml_node"
如果转换为字符,您可以获得所有数据
object.size(as.character(page))
。一切都在那里。只是当涉及指针时,object.size
并不是了解特定变量存储了多少数据的可靠方法。
您应该能够毫无问题地提取那里的所有数据。就像您可以找到所有带有
<div>
的
page |> rvest::html_nodes("div")
标签一样