爬虫中lxml模块的使用

每日分享:

做事情用“坚持”两个字,你的潜意识就会认为是一件困难的事情,然后你必须强迫自己去执行,这样是不对的,想要把任何一件事情做成功,一定要找到享受的感觉,以“享受”的心态去执行,你的潜意识就会认为这是一件容易的事情。

一、爬虫对HTML提取的内容

  • 提取标签中的文本内容
  • 提取标签中的属性的值
    • 比如,提取a标签中href属性的值,获取url,进而继续发起请求

二、lxml模块的使用

1. 导入lxml的etree库

from lxml import etree

2. 利用etree.HTML,将html字符串(bytes类型或str类型)转化为element对象,element对象具有xpath的方法,返回结果的列表

html = etree.HTML(text)

ret_list = html.xpath("xpath语法规则字符串")

3. xpath方法返回列表的三种情况

  • 返回空列表:根据xpath语法规则字符串,没有定位到任何元素
  • 返回由字符串构成的列表:xpath字符串规则匹配的一定是文本内容或某属性的值
  • 返回由element对象构成的列表:xpath规则字符串匹配的是标签,列表中的element对象可以继续进行xpath

三、lxml模块使用示例

from lxml import etree
text = ''' 
<div> 
  <ul> 
    <li class="item-1">
      <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>
  </ul> 
</div>
'''
# 转化为element对象
html = etree.HTML(text)
text_list = html.xpath('//a/text()')
href_list = html.xpath('//a/@href')
print(text_list, href_list)
print('-'*20)

for text in text_list:
    my_index = text_list.index(text)
    href = href_list[my_index]
    print(text, href)
print('-'*20)
# zip:以同样的索引访问text_list和href_list
for text, href in zip(text_list, href_list):
    print(text, href)
print('-'*20)
el_list = html.xpath('//a')
for el in el_list:
    print(el.xpath('./text()'))
print('-'*20)
for el in el_list:
    print(el.xpath('.//text()'))
print('-'*20)
for el in el_list:
    print(el.xpath('text()'))
print('-'*20)
for el in el_list:
    print(el.xpath('./text()')[0], el.xpath('./@href')[0])
print('-'*20)

结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值