Python——基础学习xpath(爬虫)

python三种解析方法:
1.正则
2.bs4
3.xpath

Python——xpath解析:

xpath解析是最常用且最便捷高效的一种解析方法,通用性最强

xpath解析原理:
1.实例一个etree的对象,且需要将被解析的页面的源码数据加载到该对象中。
2.调用etree对象中的xpath方法结合xpath表达式实现标签的定位和内容的抓捕。
xpath安装:

pip install lxml

如何实例化一个etree对象
导包:

from lxml import etree

两种情况:

1.将本地的html文档的源码数据加载到etree的对象中。

etree.parse(file_path)

2.从互联网上获取的源码数据加载到etree对象中:

etree.HTML(‘text’)
xpath(“xpath表达式”)

第一种要有自己的(本地的)html网页,不方便写
就第二种把
随便找一个网站来爬取(4k图片)

# 导包
from lxml import etree
import os
import requests
# 进行反爬的基本处理
headers ={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.27'   }
# 要爬取的内容的网址
url = 'https://pic.netbian.com/4kmeinv/'
# 发起请求
response = requests.get(url=url, headers=headers)
# 乱码两种解决方式
# 1. response.encoding = 'gbk'
content =response.text
tree = etree.HTML(content)
# xpath路径F12查找,图片在li中
# 爬取图片的连接
li_list = tree.xpath("//ul[@class='clearfix']/li")
# os创建文件夹
if not os.path.exists('./imgs'):
    os.mkdir('./imgs')
# 遍历每个图片进行保存    
for i in li_list:
    img_src = 'http://pic.netbian.com'+ i.xpath("./a/img/@src")[0]
    img_name = i.xpath('./a/img/@alt')[0]+'.jpg'
    # 乱码的对二种解决方法(最通用的一中解决方法))
    img_name = img_name.encode('iso-8859-1').decode('gbk')
    # print(img_name,img_src)
    #请求图片进行持久化处理
    # 对每张图片的连接发送请求进行储存
    img_text = requests.get(url=img_src,headers=headers).content
    # 图片命名
    img_path = 'imgs/'+ img_name
    with open(img_path, 'wb') as files:
        files.write(img_text)
print("下载成功")

如果不会写xpath表达式,也可以直接在你需要定位的元素上进行复制(xpath复制),效果一样。

这里只是粗略的说一下,想要好好研究的可以自己找哦

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值