R语言爬虫:CSS方法与XPath方法对比(代码实现)

CSS选择器和XPath方法都是用来定位DOM树的标签,只不过两者的定位表示形式上存在一些差别:

CSS 方法提取节点

library("rvest") single_table_page <- read_html("single-table.html") # 提取url里的所有表格 html_table(single_table_page) html_table(html_node(single_table_page,"table")) products_page <- read_html("./case/products.html") products_page %>% html_nodes(".product-list li .name") %>% html_text() product_items <- products_page %>% html_nodes(".product-list li") data.frame(name = product_items %>% html_nodes(".name") %>% html_text(), price = product_items %>% html_nodes(".price") %>%html_text() %>% str_replace_all(pattern="\\$",replacement="") %>% as.numeric(), stringsAsFactors = FALSE)

XPath 方法提取节点

page <- read_html("./case/new-products.html") #查找所有p节点 page %>% html_nodes(xpath="//p") #CSS\'s way page %>% html_nodes("p") # 找到所有具有class属性的li标签 # xpath\'s way page %>% html_nodes(xpath="//li[@class]") # CSS\'s way page %>% html_nodes("li[class]") # 找到id=‘list’的div标签下的所有li标签 # xparth\'s way page %>% html_nodes(xpath="//div[@id=\'list\']/ul/li") # CSS\'s way page %>% html_nodes("div#list > ul > li") # 查找包含p节点的所有div节点 page %>% html_nodes(xpath="//div[p]") # 查找所有class值为“info-value”,文本内容为“Good”的span节点 page %>% html_nodes(xpath = "//span[@class=\'info-value\' and text()=\'Good\']")

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwzdx.html