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

2023-11-05

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复制),效果一样。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python——基础学习xpath(爬虫) 的相关文章

随机推荐