• python爬虫之路——初识lxml库和xpath语法


    lxml库:是xml解析库,也支持html文档解析功能,实用功能:自动修正补全html代码。

    使用流程:①导入lxml中的etree库,②利用etree.HTML(文件名)或etree.parse(本地打开,路径)进行初始化,③etree库把HTML文档解析为Element对象。

    from lxml import etree

    text="""

    <div >

    <div class="sidebarContent">sdssdds

    </div>

    """

    html=etree.HTML(text)

    result=etree.HTML(html)

    print(result)

     xpath语法:是一门在xml文档中查找信息的语言,对html文档也有很好的支持。

    节点分类

    先辈节点

    父节点

    同胞节点《=本节点

    子节点

    后代节点

     xpath 的语法

    分三部分:/ div [1]

    ①/或//或.或..  只有/表示确定剩下都表示不确定要根据节点谓语确定。

    ②div 表示标签

    ③[1]第一个节点

    做模糊查询

    表达式中有非(/)符号就是。

     分叉路径的内容寻找。思路:先抓大后抓小,寻找循环点。

    ①有共同先辈节点

    import  requests

    from  lxml import etree

    header={

    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36

    }

    url='https://www.baidu.com/?tn=90278658_hao_pg'

    res=requests.get(url,heads=heads)

    selector=etree.HTML(res.test)

    #运用两次xpath方法

    url_infos=selector.xpath('//div[@class="asd asdf"]')

     for url_info in url_infos:

      id=url_info.xpath('div[2]/a[1]/text()')[0]

    print (id)

    ②互为同胞节点(标签名相同,属性不同)

     from lxml import etree

    html1="""

    <li class="tag-1">内容1</li>

    <li class="tag-1">内容2</li>

    <li class="tag-1">内容3</li>

    <li class="tag-1">内容4</li>

    """

    selector=etree.HTML(html1)

    contents=elector.xpath('//li[starts-with(@class,"tag")]/text()')

    for content in contents:

      print(content)

    ③为父子关系

     from lxml import etree

    html1="""

    <li class="red">内容1

    <h1>内容2</h1>

    </li>

    """

    selector=etree.HTML(html1)

    content1=selector.xpath('//div[@class="red"]')[0]

    #string(.)方法可用于标签套标签情况

    content2=content1.xpath('string(.)')

      print(content2)

  • 相关阅读:
    [程序员必备工具]分享一款不错的个人代码个人知识管理软件wiz
    移动开发,如何选择手机软件开发​平台?
    Best Wishes,my Married Friend!
    三年来最开心的一天!
    “世事无绝对”也是相对的……
    又到世界CUP……
    利物浦,总是在我情绪低落时给我鼓舞!
    一种感觉
    How to break to loop? It frustrates me!
    取舍有度,学会放弃……
  • 原文地址:https://www.cnblogs.com/lanbofei/p/8745968.html
Copyright © 2020-2023  润新知