我用rvest从https://www.psychologytoday.com/ca/therapists/m5g刮掉;特别是我之后的 data-myurl
html属性在 div
标记中 id="results-page"
。如果您查看来源,则会看到 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"
因此缺少原始网址后的所有内容。它看起来不像JS的东西,因为当我查看源代码时,我没有看到任何 script
标签。有谁知道URL中的这些数字实际上是什么以及如何提取它们?谢谢!
答案 0 :(得分:0)
你无法用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