首页 > 编程语言 >【笔记】Python爬虫之Xpath、BS4解析

【笔记】Python爬虫之Xpath、BS4解析

时间:2024-03-16 09:55:58浏览次数:26  
标签:Xpath xpath etree Python 标签 sp BS4 text 属性

1、Bs4解析

#安装bs 4

import requests
from bs4 import BeautifulSoup
#   1
url=""

resp=requests.get(url)

#   2.将请求到的数据变成 BeautifulSoup 对象
sp=BeautifulSoup(resp.text,'lxml')
#               ↑加.text    ↑固定lxml

#————————————————————————————————————————————————————————————————————————————————————————————————————
#  sp.***   ,***可替换成标签,比如div,a等

#————————————————————————————————————————————————————————————————————————————————————————————————————

#  sp.find(标签,class_="属性")
#  sp.find_all(标签,class_="属性")

#————————————————————————————————————————————————————————————————————————————————————————————————————
#  sp.select(".属性")    可以做选择器,返回的是一个列表       .表示类,后边跟类的属性

#————————————————————————————————————————————————————————————————————————————————————————————————————
#  sp.select(".属性 > ul")  层级选择:.类属性下有个ul的标签
#            ↑ 类的属性  ↑ 标签   # > 两边一定要有空格,>可以连续用
#用空格表示多个层级,>表示一个层级

#————————————————————————————————————————————————————————————————————————————————————————————————————
#获取标签之间的文本等可以直接.text 或 .string 或 get_text()
#如:
# print(sp.select(".属性 > ul").text) 或 print(sp.select(".属性 > ul").string)
#区别:-text get_text()可以获取标签下所有文本内容
#     -string 只可以获取标签下直系文本内容

#————————————————————————————————————————————————————————————————————————————————————————————————————

#sp.a["属性值"],可以获取标签下的属性值,直接跟在...["..."]

 

2、Xpath解析

import requests
from lxml import html
etree = html.etree

#实例化etree对象,运用etree中的xpath方法    安装lxml
#实例化方法:from lxml import html
#          etree = html.etree
#    -1.将本地html文档中源码数据加载到etree对象中:
#         etree.parse(文档)

#    -2.将互联网上加载的源码数据加载到该对象中:
#         etree.HTML(page_text)
#    -xpath(‘xpath表达式’)

#   r=xxx.xpath("xx//xx/xx")  // 表示多个层级,/表示一个层级,相当于空格和 >
#   r=xxx.xpath('div[@class="song"]')   定位到class属性为song的div标签   (属性定位)
#   r=xxx.xpath('div[@class="song"]/p[3]')   索引定位,!!,从1开始,不是从0开始的
#   r=xxx.xpath('div[@class="song"]/p[3]/text()')[0]   加上/text变成文本列表,在外边加[0]表示取列表的第一个元素

#取文本:   /text(),获取表示标签中直系的文本内容   //text(),获取表示标签中所有的文本内容
#取属性值:  r=xxx.xpath('//div[@class="song"]/img/@src')    /img/@src 表示img标签下属性src的值(列表)

 

标签:Xpath,xpath,etree,Python,标签,sp,BS4,text,属性
From: https://www.cnblogs.com/HanaKoo/p/18076738

相关文章

  • 【Python】什么是wsgi,uwsgi,uWSGI?
    WSGIWSGI(WebServerGatwayInterface)是一个python标准库,定义了web服务器和Python应用之间的接口。这个标准允许Web服务器(Apache或者nginx)将请求转发给Python应用(如Django或者Flask)然后将应用的响应返回给客户端。简单来说,WSGI充当了Web服务器和Python应用之间的桥梁......
  • python学习笔记-scarpy
    一、scrapy介绍Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架应用原理1、指定初始url 2、解析响应内容 -给调度器 -给item;pipeline;用于做格式化;持久化引擎(Scrapy)用来处理整个系统的数据流处理,触发事务(框架核心)调度器(Scheduler)用来接......
  • 深度学习入门:基于Python的理论与实践 笔记
    深度学习入门:基于Python的理论与实践笔记一,Python基础由于本人之前已经系统学习过Python,此处只总结有关深度学习的Python的库NumPy生成NumPy数组要生成NumPy数组,需要使用np.array()方法。np.array()接收Python列表作为参数,生成NumPy数组(numpy.ndarray)>>>x=np.array......
  • 深度学习入门基于python的理论与实现-第四章神经网络的学习(个人向笔记)
    目录从数据中学习损失函数均方误差(MSE)交叉熵误差mini_batch学习mini_batch版交叉熵误差的实现从数据中学习神经网络的"学习"的学习是指从训练数据自动获取最有权重参数的过程。神经网络的特征就是可以从数据中学习即由数据自动决定权重参数的值。机器学习通常是认为确定一些......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的火焰检测系统(Python+PySide6界面+训练代码)
    摘要:本研究详述了一种采用深度学习技术的火焰检测系统,该系统集成了最新的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地识别火焰目标或着火点等。文章深入阐述了YOLOv8算法......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的番茄成熟度检测系统(Python+PySide6界面+训练代码)
    摘要:开发番茄成熟度检测系统对于提高农业产量和食品加工效率具有重大意义。本篇博客详细介绍了如何利用深度学习构建一个番茄成熟度检测系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并结合了YOLOv7、YOLOv6、YOLOv5的对比,展示了不同模型间的性能指标如mAP、F1Score等......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的行人车辆检测与计数(Python+PySide6界面+训练代码)
    摘要:开发行人车辆检测与计数系统对于提升城市交通管理和监控系统的效率至关重要。本篇博客详细介绍了如何利用深度学习构建一个行人车辆检测与计数系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并结合了YOLOv7、YOLOv6、YOLOv5的对比,给出了不同模型之间的性能指标如mAP......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的教室人员检测与计数(Python+PySide6界面+训练代码)
    摘要:开发教室人员检测与计数系统对于优化教学资源和提升教学效率具有重要意义。本篇博客详细介绍了如何利用深度学习构建此系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5的性能,展示了不同模型的mAP、F1Score等性能指标。文章深入探讨了......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的夜视行人检测系统(Python+PySide6界面+训练代码)
    摘要:开发高效的夜视行人检测系统对于提升夜间安全和监控效能至关重要。本篇博客详尽介绍了如何利用深度学习技术搭建一个夜视行人检测系统,并提供了完整的实现代码。本系统采用了先进的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5进行了性能比较,展示了不同模型间的mAP、F1Score等关键性......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的舰船检测与识别系统(Python+PySide6界面+训练代码)
    摘要:开发高级的舰船检测与识别系统对于提升海上安全监控和航运管理至关重要。本篇博客详细阐述了如何应用深度学习技术构建舰船检测与识别系统,并提供了完整的实施代码。本系统采用了性能强大的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5进行了细致的性能对比,展示了不同模型的mAP、F1S......