zoukankan      html  css  js  c++  java
  • 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']")
    
  • 相关阅读:
    var在PHP和JS中的使用
    修改PHP上传文件大小限制的方法
    Linux中tail指令详解
    drupal7 profile2模块获取个人信息
    drupal7 STMP邮件模块配置
    drupal读取mysql的longblob字段
    drupal7 自定义登录&找回密码页面,注意事项
    转 VS Code 快捷键大全,没有更全
    权力关进笼子里
    drupal的权限设置
  • 原文地址:https://www.cnblogs.com/xihehe/p/8310089.html
Copyright © 2011-2022 走看看