xpath实战01

经过了前面的讲解你是否已经能够熟练使用xpath表达式对数据进行解析了呢?
下面给出我们上次布置的任务爬取某荣耀的英雄列表的代码供大家参考学习改进

from lxml import html
import requests
import os
etree=html.etree
#目标页面的url
url='https://pvp.qq.com/web201605/herolist.shtml'
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 Edg/89.0.774.77'
}
#用requests库发送请求,对请求结果调用content属性获取相应内容
page_content=requests.get(url=url,headers=headers).content
#将响应内容传入HTML方法中
tree=etree.HTML(page_content)
#用xpath表达式分析至每个li标签
hero_list=tree.xpath('//ul[@class="herolist clearfix"]/li')
#如果没有这个文件夹就创建
if not os.path.exists('heroLibs'):
    os.mkdir('heroLibs')
#对列表中的每个li标签进行遍历
for one in hero_list:
    #获取每张图片的url,src中的url并不完整,手动补全
    img_url="https:"+one.xpath('./a/img/@src')[0]
    #对每个获取的url发起请求获取新的相应内容
    img_content=requests.get(url=img_url,headers=headers).content
    #获取英雄名字
    hero_name=one.xpath('./a/text()')[0]
    #编写文件名字
    filename='heroLibs/'+hero_name+'.jpg'
    #打开文件
    with open(filename,'wb') as fp:
        #保存图片
        fp.write(img_content)
        print("图片存储成功!")
#文件操作完毕后及时关闭
fp.close()

这里需要注意的点就是:
1.xpath解析后获取的src并不是完整的图片路径需要手动补全
2.获取了li标签列表后对每个li标签遍历时需要从当前li标签的位置解析需要使用’./'从当前位置开始解析
3.文件使用完后要及时关闭
运行结果展示如下:
在这里插入图片描述
在这里插入图片描述
自己编写的过程中遇到问题欢迎留言和私信,拜拜咯。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值