使用 rvest 时不完整的 html 属性



我正在使用 rvest 从 https://www.psychologytoday.com/ca/therapists/m5g 中抓取;特别是我所追求的是带有 id="results-page" div 标签中的 data-myurl html 属性。如果您查看源代码,您会发现只有一个 div 带有 id="results-page" data-myurl 属性看起来像主 URL,除了添加了一串由句点和下划线分隔的数字,如下所示

<div id="results-page" data-myurl="https://www.psychologytoday.com/ca/therapists/m5g?sid=1510588046.3852_2969">

您看到的数字可能会有所不同。为了尝试提取它,我使用以下代码:

require(rvest)
fsa <- read_html('https://www.psychologytoday.com/ca/therapists/m5g')
fsa %>% html_node('div #results-page') %>% html_attr("data-myurl")

但是,这仅返回

[1] "https://www.psychologytoday.com/ca/therapists/m5g"

因此,原始URL之后的所有内容都丢失了。这似乎不是JS的事情,因为我在查看源代码时没有看到任何 script 标签。有谁知道URL中的这些数字实际上是什么以及如何提取它们?谢谢!

你不能

用 rvest 做到这一点。

您尝试抓取的页面在加载初始页面后会动态呈现。内容本身始终相同,但 sid 编号会在加载页面后更改结果的顺序。sid 在每次访问和页面重新加载时都会更改。

我怀疑这样做是为了避免在寻找治疗师时出现市场偏见。

如果你真的想要 sid 编号,你需要使用一个处理动态页面的工具,比如 casperjs。(http://casperjs.org/(

编辑:

或者,如果必须在R中完成,则可以使用RSelenium。 (https://cran.r-project.org/web/packages/RSelenium/(

相关的起点如下:https://cran.r-project.org/web/packages/RSelenium/vignettes/RSelenium-headless.html

最新更新