python spider 爬虫 之 解析 xpath 、jsonpath、BeautifulSoup (三)

news2024/11/17 23:54:24

BeautifulSoup

简称:bs4

BeautifulSoup跟lxml 一样,是一个html文档的解析器,主要功能也是解析和提取数据
优缺点
缺点:效率没有lxml的效率高
优点:接口接口人性化,使用方便 延用了css选择器

在这里插入图片描述

安装BeautifulSoup

1、安装:pip install bs4
2、导入:from bs4 import BeautifulSoup
3、创建bs4 对象
① 服务器响应的文件生成对象
soup = BeautifulSoup(response.read().decode(‘utf-8’),‘lxml’)
② 本地文件生成对象 python对open默认打开文档是gbk
soup = BeautifulSoup(open(‘html文档.html’, ’r‘,encoding=‘utf-8’),‘lxml’)

from bs4 import BeautifulSoup

soup = BeautifulSoup(open('1.html','r',encoding='utf-8'))

# 节点定义
# 1、根据标签查找节点 
print(soup.img)   # 只能找到1.html中第一个img标签元素   <img >     </img>
print(soup.img.name)   # 返回 img   元素名称
print(soup.img.attrs)  # 返回 img的属性,以字典形式输出

# 2、函数式  find    find_all 	search
#   find     返回是是一个元素对象
print(soup.find('img'))					# 只能找到第一个img元素 对象  
print(soup.find('img'),alt='kitty')		# 获取 alt=kitty的img元素,也是符号条件的第一个对象
#  如果用class 匹配 要在      class_      下划线
print(soup.find('img'),class_='kitty')	# 获取 alt=kitty的img元素,也是符号条件的第一个对象  

#	find_all 	返回是列表
print(soup.find_all('img'))					# 返回所有img元素   
print(soup.find_all(['img', 'span'])		# 获取 返回所有img和span元素

print(soup.find_all('img'), limit=2)		# 返回前面2个 img元素

#	select   根据选择器得到节点列表对象      跟CSS3 选择器一样
print(soup.select('div'))		#   返回 标签是div的所有元素   
print(soup.select('#p'))		#   返回 id=P的标签元素   
print(soup.select('.p'))		#   返回 class=p的所有标签元素列表   
print(soup.select('div>p'))		#   返回 选择所有父级是div的元素的p元素  
print(soup.select('div,p'))		#   返回 所有div和p的元素列表
print(soup.select('div p'))		#   返回 选择div元素内所有p元素 	

#  属性选择器

print(soup.select('div[id]'))		#   返回 选择有属性id的所有div元素列表	
print(soup.select('div[id="A2"]'))		#   返回 选择属性id="A2"的所有div元素列表	


# 节点信息    
#	string      get_text()        xpath  用  text()

#			获取节点内容

obj = soup.select('#d1')[0]   #select()  返回是列表,   如果要得到第一个元素对象 [0]  才能用  obj.name
# 如果标签对象中 只有内容 string  和  get_text()  效果一样
# 如果标签对象中  出来内容还有标签,  string  就获取不到内容了,get_text() 是可以获取得的

print(obj.string)
print(obj.get_text())


#			获取节点属性
obj = soup.find('li')  	#find()  返回是元素对象  obj.name

print(obj.name)    # 获取元素名称
print(obj.attrs)   # 将属性值作为一个  字典 返回
print(obj.attrs.get('title'))   #    推荐这种
print(obj.get('title'))   		# 
print(obj['title'])   			# 

xpath 、jsonpath、BeautifulSoup

如果是json格式,用 jsonpath

如果是html网页, 首选xpath

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/687491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

故障处理程序框图原理

一、故障处理程序框图 故障处理程序包括保护软压板的投切检查、保护定值比较、保护逻辑判断、跳闸处理程序和后加速部分。故障处理程序框图如图2&#xff0d;8所示。保护逻辑判断程序将在第三章中详述。 进入故障处理程序入口&#xff0c;首先置标志位KST为1&#xff0c;驱动起…

传统表格还是思维导图?哪种基本功能测试用例模式更好?

这个问题先抛出我的观点&#xff1a; 具体选择哪种形式更好&#xff0c;需要根据具体情况来考虑。 如果测试用例较为简单&#xff0c;可以选择表格形式&#xff1b;如果测试用例较为复杂&#xff0c;可以选择思维导图形式。但实际工作中&#xff0c;二者一般是结合使用的。 …

php正则匹配

一、基础内容 1、通用原子 2、元字符 符号意义.除了换行以外的所有字符*匹配前面的内容出现 0 次及以上?匹配前面的内容出现 0 次或 1 次出现一次或多次$必须以它结尾{n}恰巧出现 n 次{n,}大于等于 n 次{n,m}大于等于n,小于等于 m[]是一个集合&#xff0c;匹配中括号中的任…

实时数据管理与生产控制:MES系统的作用和优势解析

一、什么是MES系统&#xff1f; MES系统&#xff0c;全称为制造执行系统&#xff08;Manufacturing Execution System&#xff09;&#xff0c;是一种用于管理和监控制造过程的信息系统。它通过实时收集、分析和共享生产数据&#xff0c;提供全面的生产计划、调度、追踪和报告…

jenkins选择不同构建环境

1、业务在有些情况下需要选择不同的环境来构建服务&#xff0c;使用同一套代码读取不同的配置 2、jenkins使用如下配置即可实现构建环境的选择 2.1、配置构建选项 2.2、配置构建tag 2.3、选择构建时间参数 3、使用如下pipeline实现jenkins构建环境选择 pipeline {agent any…

黑马程序员前端 Vue3 小兔鲜电商项目——(十二)会员中心

文章目录 路由配置模板代码会员中心个人信息用户订单 配置路由 个人中心信息渲染使用 Pinia 数据渲染个人信息 猜你喜欢封装接口渲染数据 我的订单基础列表渲染tab切换实现分页实现 细节优化默认三级路由设置订单状态显示适配 路由配置 模板代码 会员中心 创建 src\views\Me…

XR云新未来圆桌精彩回顾 | XR应用场景迭代下的新商业模式

6月15日&#xff0c;由平行云联合首都在线共同主办&#xff0c;中关村软件园协办&#xff0c;以“XR云新未来|弹性算力赋能可交互、沉浸式商业实践”为主题的XR行业交流盛会在北京成功举办。 本次会议我们邀请到平行云科技创始人兼CEO 李岩、XREAL 云XR负责人 吴维、瑞帆科技…

吃透JAVA的Stream流操作,多年实践总结

在JAVA中&#xff0c;涉及到对数组、Collection等集合类中的元素进行操作的时候&#xff0c;通常会通过循环的方式进行逐个处理&#xff0c;或者使用Stream的方式进行处理。 例如&#xff0c;现在有这么一个需求&#xff1a; 从给定句子中返回单词长度大于5的单词列表&#xf…

Java应用在线debug--bistoury介绍

Bistoury介绍 Bistoury 是去哪儿网开源的一个对应用透明&#xff0c;无侵入的java应用诊断工具&#xff0c;用于提升开发人员的诊断效率和能力&#xff0c;可以让开发人员无需登录机器或修改系统&#xff0c;就可以从日志、内存、线程、类信息、调试、机器和系统属性等各个方面…

技术管理第三板斧招聘与解聘-“能落地

1.既要帮&#xff0c;也要严 “既要帮&#xff0c;也要严”是我定义的“能落地”的核心原则&#xff0c;“帮”与“严”是双向要求&#xff1a;帮是指帮助新同学融入团队&#xff08;针对的是师兄和 Leader&#xff09;&#xff1b;严是要让新同学在团队中提升自己&#xff0c…

火爆全网,接口测试总结汇总,全知识点扫描卷起来...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 第一部分&#xf…

JavaSE-11 【内部类】

文章目录 JavaSE-11 【内部类】第一章 成员内部类和局部内部类1.1 四种权限修饰符1.2 内部类的概念和分类1.3 成员内部类的定义格式1.4 成员内部类的使用1.5 内部类的同名变量访问1.6 局部内部类定义1.7 局部内部类的final问题 第二章 匿名内部类2.1 匿名内部类2.2 匿名内部类的…

Sangfor华东天勇战队:shiro注入filter内存马

注入步骤 https://github.com/yyhuni/shiroMemshell&#xff08;实验环境&#xff09; 这里用的 pom.xml加入 <dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.28.0-GA</version> <…

阿里企业邮箱域名解析MX记录值设置

阿里企业邮箱配置需要为域名添加MX解析记录&#xff0c;不只是MX域名解析记录值&#xff0c;还需要为域名添加pop3、imap、smtp及mail等CNAME解析类型&#xff0c;阿里云百科分享阿里云企业邮箱域名MX解析记录类型、记录值及服务器地址&#xff1a; 目录 新版阿里企业邮箱域名…

FPGA解码 4K MIPI 视频自定义IP版 纯vhdl实现 CSI2 RX 采集OV13850 提供工程源码和技术支持

目录 1、前言2、Xilinx官方主推的MIPI解码方案3、本 MIPI CSI2 模块性能及其优越性4、我这里已有的 MIPI 编解码方案5、vivado工程介绍6、上板调试验证7、福利&#xff1a;工程代码的获取 1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff…

div转data:image/svg编码图片

前言 将div转base64图片 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>div-svg-base64</title><script type"text/javascript" src"/js/jquery-3.2.1.min.js"></script><scr…

使用 Jetpack Compose 的 TextButton 组件

Jetpack Compose 是 Google 推出的一种声明式 UI 框架&#xff0c;它使 Android UI 开发变得更加简单和直观。在本篇博客中&#xff0c;我们将深入探索 Jetpack Compose 中的 TextButton 组件。 一、TextButton的使用 二、自定义TextButton 三、Button和TextButton的区别 一…

搜索算法特训 ----- Week5/6/7 (它太重要了)

学会二叉树不知道干啥?二叉树的深度优先搜索和广度优先搜索,我要打十个乃至二十个(打开你的LeetCode撸起来)学练并举_二叉树广度优先搜索_小杰312的博客-CSDN博客 上述文章&#xff0c;初步介绍了搜索过程和关于二叉树中进行搜索的很多实例。将搜索的过程写的还是很详细的。很…

网站出现卡顿是什么原因,要怎么解决?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言网站卡顿的原因解决…

人工智能算法在外卖配送系统中的应用和前景

随着人们对于外卖服务需求的增加&#xff0c;外卖配送系统的效率和精确度成为了重要的考虑因素。而人工智能算法的出现&#xff0c;则为外卖配送系统提供了更好的解决方案。 一、应用场景 1.1 路线规划 在外卖配送过程中&#xff0c;路线的规划是非常重要的。通过人工智能算…