如何使用rvest从搜索结果网址中提取ID名称? (CSS选择器不工作)

时间:2017-12-01 15:30:27

标签: css r web-scraping rvest

我试图从搜索结果页面(link here)中提取产品项目名称列表。

library(rvest)
results <- read_html('https://www.fishersci.com/us/en/catalog/search/products?keyword=sodium+hydroxide&nav=')
results %>%
  html_nodes(".result_title a") %>%
  html_text()

返回

character(0)

我也试图利用:

html_attr('href')
没有运气。我甚至可以使用CSS来提取这些链接的标题吗?我试图列出30个产品结果(例如&#34;氢氧化钠(颗粒/认证ACS),Fisher Chemical&#34;)。这些链接的ID是否使用javascript?

感谢您的帮助,这是我的第一个抓取项目,我对网页设计的了解比这个特定页面简单得多。

1 个答案:

答案 0 :(得分:1)

结果确实是用javascript生成的。 rvest目前不处理javascript,但存在其他替代方案。

例如,您可以使用seleniumphantomjs来获得您想要的内容:

library(RSelenium) # Wrapper around Selenium
library(wdman)     # helper to download and configure phantomjs
library(rvest)

phantomjs <- phantomjs(port = 4444L)
remote_driver <- remote_driver(browserName = "phantomjs", port = 4444L)
remote_driver <- remoteDriver(browserName = "phantomjs", port = 4444L)
remote_driver$open(silent = TRUE)
remote_driver$navigate("https://www.fishersci.com/us/en/catalog/search/products?keyword=sodium+hydroxide&nav=")
remote_driver$getPageSource()[[1]]

page_source %>% 
  read_html() %>% 
  html_nodes(css = '.result_title') %>% 
  html_text()