xpath工具(解析)

  • 在XML文档中查找信息的语言,同样适用于HTML文档的检索 xpath辅助工具 chrome插件:Xpath Helper
  • 打开/关闭:Ctrl + shift + x
    Firefox插件:XPath Checker
    XPath编辑工具:XML quire
    匹配演示
    1. 查找所有的book节点 : //book

查找所有book节点下的title子节点中,lang属性为"en"的节点

//book/title[@lang=“en”]

  1. 查找bookstore下的第2个book节点下的title子节点 /bookstore/book[2]/title

  2. 选取节点 // : 从整个文档中查找节点 //price //book//price @ : 选取某个节点的属性值 //title[@lang=“en”]

  3. @的使用

  4. 选取1类节点 : //title[@lang=“en”]

  5. 选取存在某个属性节点: //title[@lang]

  6. 选取节点的属性值: //title/@lang

  7. 匹配多路径 :|

  8. xpath表达式1 | xpath表达式2

  9. 获取所有book节点下的title子节点和price子节点 //book/title | //book/price

xpath函数
contains():匹配一个属性值中包含某些字符串的节点
//title[contains(@lang,“e”)]
//div[contains(@class,“njjzw”)]

text():获取文本 //title[contains(@lang,"e")]/text() lxml库及xpath使用 安装 管理员 Prompt : conda install lxmlPrompt : conda install lxml 使用流程

导模块

from lxml import etreefrom lxml import etree
创建解析对象 
parseHtml = etree.HTML(html)
调用xpath 
rList=parseHtml.xpath('xpath表达式')
 ## 只要调用了xpath,结果一定是列表 ##
    from lxml import etree
    
    html = '''
    '''
    # 创建解析对象(etree.HTML())
    parseHtml = etree.HTML(html)
    # 解析对象调用xpath()
    # 1. 匹配出所有的 href 的值
    r1 = parseHtml.xpath('//a/@href')
    #print(r1)
    # 2. 把href中的 / 匹配出来
    r2 = parseHtml.xpath(
     '//div[@class="wrapper"]/a/@href')
    #print(r2)
    # 3. 把href中的非 / 匹配出来
    r3 = parseHtml.xpath(
       '//ul[@id="nav"]/li/a/@href')
    #print(r3)
    
    # 4. 获取所有a节点的文本内容
    r4 = parseHtml.xpath('//a/text()')
    #print(r4)
    # 5. 获取所有a节点文本内容(不包括最上面的新浪社会)
    r5 = parseHtml.xpath(
        '//ul[@id="nav"]/li/a')
    for s in r5:
        print(s.text)

你可能感兴趣的:(爬虫)