爬虫---

这段博客介绍了如何使用Python的lxml库解析HTML字符串,通过XPath选取特定节点。内容包括获取a标签文本、根据href属性筛选节点、解析带属性的a标签文本、获取a标签的href属性以及选取最后一个a链接的内容。示例代码展示了XPath的不同路径、属性选择和谓语表达式的用法。
摘要由CSDN通过智能技术生成

import parser

 

from lxml import etree

 

wb_data="""

        <div>

            <ul>

                 <li class="item-0"><a href="link1.html">first item</a></li>

                 <li class="item-1"><a href="link2.html">second item</a></li>

                 <li class="item-inactive"><a href="link3.html">third item</a></li>

                 <li class="item-1"><a href="link4.html">fourth item</a></li>

                 <li class="item-0"><a href="link5.html">fifth item</a> # 注意,此处缺少一个 </li> 闭合标签

             </ul>

         </div>

        """

#将字符串解析为html对象,补全html,body

html=etree.HTML(wb_data)

print("********************1**********************")

#将a标签的文本直接获取/test/()

data2=html.xpath('//li/a/text()')

print(data2)

 

print("********************2**********************")

#解析html文件的地址

#获取a链接href得属性值为link2.html的内容

 

#解析器

parser = etree.HTMLParser(encoding='utf-8')

 

 

html_flie=etree.parse('123.html',parser=parser)

data3=html_flie.xpath('//li/a[@href="link2.html"]/text()')

print(data3)

# html_data = etree.tostring(html_file,pretty_print=True)

# res = html_data.decode('utf-8')

# print(res)

#//是任意路径,*任意节点

#匹配任意节点

# data3=html_file.xpath("//*")

# for i in data3:

# if hasattr(i,'text'):

# print(i.text)

 

print("********************4**********************")

#解析带属性的a标签的text文本

data4=html_flie.xpath('//li/a[@href]/text()')

print(data4)

 

print("********************5**********************")

#解析属性

data5=html_flie.xpath('//li/a/@href')

print(data5)

 

print("********************6**********************")

#谓语

data6=html_flie.xpath('//li[last()]/a/text()')#获取最后一个a链接的内容

print(data6)

 

"""

1.读取字符串

2.读取文件

3.节点路径会写 / // ./

4.解析节点的内容

5.解析节点的属性@

 

路径:

/根路径 ./当前路径 //任意路径

 

属性:

/@class获取属性 /a[@class="123"]获取带属性的a标签

 

谓语:

/a[1]获取第一个a标签

"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值