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

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

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

from lxml import etree

text="""

 

sdssdds

"""

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="""

  • 内容1
  • 内容2
  • 内容3
  • 内容4
  • """

    selector=etree.HTML(html1)

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

    for content in contents:

      print(content)

    ③为父子关系

     

     from lxml import etree

    html1="""

  • 内容1

    内容2

  • """

    selector=etree.HTML(html1)

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

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

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

     

      print(content2)

     

    转载于:https://www.cnblogs.com/lanbofei/p/8745968.html

    你可能感兴趣的:(python爬虫之路——初识lxml库和xpath语法)