Python爬虫lxml的xpath二次匹配

Python爬虫lxml的xpath二次匹配

from  lxml  import  etree

'''
    在爬取多级分类,并且需要逐级对应时用到
'''
html = '''
<div>
	<div class="content_box" id="divnewslist">   
	    <ul>
	         <li><a href='***' title="">&rarr; a</a>
	    		  <ul>
	                  <li><a href='****' title="">a1</a></li>
	                  <li><a href='****' title="">a2</a></li>
	              </ul>
	         </li>
	         <li><a href='***' title="">&rarr; b</a>
	             <ul>
	                 <li><a href='****' title="">b1</a></li>
	             </ul>
	         </li>
	    </ul>
	</div>
</div>
'''
page = etree.HTML(html)
element_div = page.xpath('//div[@id="divnewslist"]/ul/li')
print(element_div)

输出: [<Element li at 0x2f85048>, <Element li at 0x2f85108>]

下面开始二次匹配:

for i in element_div:

    # 打印出第一次匹配的标签内容
    print(etree.tounicode(i))
    
    # 匹配出一级分类
    class_1 = i.xpath('a/text()')  # 这儿不用'/',直接从下一级标签开始匹配
    print(class_1)
    # 匹配出二级分类
    class_2 = i.xpath('ul/li/a/text()')
    print(class_2)
	# 然后就是储存了......

输出:

<li><a href="***" title="">→ a</a>
    	    		  <ul>
    	                  <li><a href="****" title="">a1</a></li>
    	                  <li><a href="****" title="">a2</a></li>
    	              </ul>
    	         </li>
    ['→ a']
    ['a1', 'a2']
    <li><a href="***" title="">→ b</a>
    	             <ul>
    	                 <li><a href="****" title="">b1</a></li>
    	             </ul>
    	         </li>
    ['→ b']
    ['b1']

*记录学习过程中的问题,加油! *

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值