R rvest read_html() 返回几乎空的页面

问题描述 投票:0回答:1

我想抓取此页面上的广告链接: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) ?"

提前非常感谢您的帮助。

r web-scraping rvest httr
1个回答
0
投票

那是因为

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")

标签一样
© www.soinside.com 2019 - 2024. All rights reserved.