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)
    

      

  • 相关阅读:
    MaskRCNN模型解读
    Centos7下WebLogic安装部署
    CentOS 7 安装 JAVA环境(JDK 1.8)
    Linux下如何查看tomcat是否安装、启动、文件路径、进程ID
    Nacos enable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
    多线程系列(三)之线程池
    多线程系列(二)之Thread类
    多线程系列(一)之多线程基础
    Vue2/Vue3 自定义组件库
    EF Core使用单独的项目管理迁移
  • 原文地址:https://www.cnblogs.com/wxcx/p/12913710.html
Copyright © 2011-2022 走看看