获取正确的标签,使用revest进行网页抓取



我找不到合适的标签来从网页上抓取我想要的文本。下面是一个HTML示例。我想刮文字"墨尔本风暴已取得4次尝试布里斯班野马已取得2次尝试">

我一直在使用的R代码如下,我只是无法得到我想要的文本。

url <- 'https://www.nrl.com/draw/nrl-premiership/2019/round-1/storm-v-broncos/'
RawTable <- read_html(url)
RawTable <- html_nodes(RawTable,'.u-visually-hidden')
RawTable <- html_text(RawTable)
RawTable <- data.frame(RawTable)

HTML代码:

`<div class="Match-centre-summary o-shadowed-box u-spacing-mb-small">
<span class="u-visually-hidden">Melbourne Storm has achieved 4 Tries Brisbane Broncos has achieved 2 
Tries </span>`

典型的一些特殊的技巧,如Rselenium是需要的网页,如这个。看看这个网页,你请求的数据似乎是作为JSON数据存储在一个属性中,然后由浏览器呈现。

在这种情况下,可以使用return检索属性的数据,然后将JSON数据转换为列表和/或数据框架。

library(rvest)
library(dplyr)
library(jsonlite)
url <- 'https://www.nrl.com/draw/nrl-premiership/2019/round-1/storm-v-broncos/'
page <- read_html(url)
contentnodes <-page %>% html_nodes ("div.l-content.pre-quench") %>% 
html_attr("q-data") %>% jsonlite::fromJSON()

正在发生的事情是,我们正在寻找具有"class= l-content prequench"的div节点。在该节点中有一个名为"q-data"的属性。我们想要检索的正是这个属性的数据。fromJSON()将属性的JSON数据转换为一个列表,其中包含许多嵌套的列表和数据框,其中包含与匹配相关的所有信息。
你需要找出所需信息的结构。

我想你下载的页面上没有那个文本。

我认为这是某种重定向。

如果你这样做:

write_html( read_html(url), "temp.html")

然后在浏览器中打开temp.html是你想要的源文本吗?

最新更新