【问题标题】:Rvest html_nodes span div and XpathRvest html_nodes 跨越 div 和 Xpath
【发布时间】:2018-07-15 23:11:59
【问题描述】:

我正在尝试通过阅读 XPath 代码来抓取网站。 当我进入开发者部分时,我看到了这些行:

<span class="js-bestRate-show" data-crid="11232895" data-id="928723" data-abc="0602524361510" data-referecenceta="44205406" data-catalog="1">

我想抓取 data-abc 的所有值。 假设网站上的每个元素都是一部电影,所以我想为页面的每个电影抓取所有 data-abc 元素。

我想使用带有 R 的 Rvest 包来做到这一点。 以下是两种不同的尝试,但均未奏效...

website %>% html_nodes("js-bestRate-show") %>% html_text()

website %>%
  html_nodes(xpath = "js-bestRate-show") %>%
  html_nodes(xpath = "//div") %>%
  html_nodes(xpath = "//span") %>%
  html_nodes(xpath = "//data-abc")

有人知道 html_nodes 和 Rvest 是如何工作的吗?

【问题讨论】:

  • 除非你做一些复杂的事情,CSS选择器要简单得多,例如'&lt;span class="js-bestRate-show" data-crid="11232895" data-id="928723" data-abc="0602524361510" data-referecenceta="44205406" data-catalog="1"&gt;' %&gt;% read_html() %&gt;% html_nodes('span') %&gt;% html_attr('data-abc') 请注意,您还需要 html_attr 来获取属性。 html_text 获取标签包含的文本,例如&lt;p&gt;some text&lt;/p&gt;

标签: r xpath rvest


【解决方案1】:

节点是span,类js-bestRate-show。其他一切都是属性。所以你想要这样的东西:

library(rvest)
h <- '<span class="js-bestRate-show" data-crid="11232895" data-id="928723" data-abc="0602524361510" data-referecenceta="44205406" data-catalog="1">'

h %>% 
  read_html() %>% 
  html_nodes("span.js-bestRate-show") %>% 
  html_attr("data-abc")

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2016-06-19
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多