zoukankan      html  css  js  c++  java
  • 爬虫笔记:xpath和lxml(十二)

    XPATH

    XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。

    根据元素的路径找元素。http://www.w3school.com.cn/xpath/index.asp具体介绍可以看这个。

    lxml

    lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。

    lxml和正则一样,也是用 C 实现的,是一款高性能的 Python HTML/XML

    解析器,我们可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。

    lxml python 官方文档:http://lxml.de/index.html
    需要安装C语言库,可使用 pip 安装:pip install lxml (或通过wheel方式安装)

    可以通过lxml来操作网页的xpath,获取到对应的数据或者节点。

    from lxml import etree
    import requests
    text=requests.get('http://www.baidu.com').text#打开百度,获取到html代码
    html=etree.HTML(text)#传一个字符串格式的html
    html=etree.parse('a.html')#这个parse方法可以传一个文件名,或者一个文件对象,他会自动解析
    html.xpath("/tag/a[@href='xxx']")#找到某个节点下面的a标签href属性为xx的,从根节点往下找
    html.xpath("//a[@href='xxx']") #//2个/代表不管a标签在哪个节点下面,只要herf为xx的就找到
    html.xpath("//div[@class='xxx']//a[@class='cls']") #找到所有div标签class为xx的下面的所有a标签class为cls的
    html.xpath("//div[@class='note']//a/@href") #找到div class为note下面的所有a标签,然后取到它的href属性里面的值
    html.xpath("//div[contains(@id,'qiushi_tag_')]") #模糊查询,查到id里面包含qiushi_tag的所有元素
    # xpath返回的都是一个list,如果你确定只返回一个元素的话,就可以直接取第一个元素
    # 如果不确定的话,那就需要循环了
    title = html.xpath('//div[@class="title-text c-font-medium c-color-t"]//text()') 
    print(title)
    

      

    from lxml import etree
    import requests
    text=requests.get('http://www.baidu.com').text#打开百度,获取到html代码
    html=etree.HTML(text)#传一个字符串格式的html
    title = html.xpath('//div[@class="title-text c-font-medium c-color-t"]//text()') 
    print(title)
    

      

  • 相关阅读:
    linux系统中SSH免密设置报错
    SSH config语法关键字
    共筑新零售 | 奇点云与阿里云在泛零售数据中台领域达成合作!
    20年零售数字化老兵的“中台战事”
    JAVA中的 <T extends Comparable<? super T>> 如何理解
    JAVA中的比较:comparable、compareTo
    JAVA中PrintWriter的用法
    JAVA中Map类对象如何实现遍历
    JAVA实现通过中序遍历和后序遍历序列建树,并求树的高度,用层次遍历做验证
    密码学相关知识
  • 原文地址:https://www.cnblogs.com/wxcx/p/12913710.html
Copyright © 2011-2022 走看看