当前位置: 首页 > news >正文

python is beautiful_Python学习之beautifulsoup4库的使用

一、beautifulsoup4库简介

使用requests库获取HTML页面并将其转换成字符串后,需要进一步分析HTML页面格式,提取有用信息,这个需要处理HTML和XML函数库。

beautifulsoup4库,也成为Beautiful Soup库或者bs4库,用于解析和处理HTML和XML。需要注意的是,他不是Beautifulsoup库。它最大的优点是能根据HTML和XML语法建立解析树,进而高效解析其中的内容。

HTML建立的web页面一般是比较复杂的,除了有用的信息外,还包括大量的页面格式信息元素,直接解析一个web网页需要深入了解HTML语法。而beautifulsoup4库将专业的web网页格式解析部分封装成函数,提供了若干有用快捷的处理函数。

二、beautifulsoup4库使用

1. beautifulsoup4库中最主要的是BeautifulSoup类,每个实例化的对象相当于一个页面。

使用BeautifulSoup()创建一个BeautifulSoup对象:

1927119-20201116202704874-1338754766.png

创建的BeautifulSoup对象是一个树形结构,它包含HTML页面中的每一个Tag(标签)元素,如

、等。具体描述的话,是HTML中主要结构都变成了BeautifulSoup对象的一个属性,

可以直接用.形式获取,其中的名字采用HTML中标签的名字。

2. BeautifulSoup对象常用的属性

head          HTML页面的

内容

title           HTML页面标题,在

中,由标记

body           HTML页面的

内容

p            HTML页面中第一个

内容

strings          HTML页面所有呈现在web上的字符,即标签的内容

stripped_strings      HTML页面所有呈现在web上的非空字符串

如略去

1927119-20201116204354238-389524018.png

每一个Tag标签在beautifulsoup4库中都是一个对象,称为Tag对象。例如,title是一个标签对象。每一个标签对象在HTML中都有类似的结构:

糯米

其中,尖括号(<>)中标签的名字是name,尖括号内其他项是attrs,尖括号之间的内容是string。因此,Tag对象有属性name、attrs、string,并且采用.的语法形式

name      字符串标签的名字,比如div

attrs       字典,包含了原来页面Tag所有属性,比如href

contents     列表,这个Tag下所有子Tag的内容

string      字符串,Tag所包围的文本,网页中真实的文字

如下:

1927119-20201116231118825-1892347647.png

由于HTML语法可以在标签中嵌套其他标签,所以string属性的返回值遵循如下原则:

(1)如果标签内部没有其他标签,string属性返回其中内容。

(2)如果标签内部还有其他标签,但只有一个标签,string属性返回最里面的标签内容。

(3)如果标签内部有超过一层嵌套标签,string属性返回None(空字符串)

HTML语法中同一个标签会有很多内容例如标签,百度首页一共有13处,直接调用soup.a只能返回一个。当需要列出标签对应所有内容或者需要找到非第一个标签时,

需要用到BeautifulSoup的find()和find_all()方法。这两个方法会遍历到整个HTML文档,按照条件返回标签内容。

作用:根据参数找到标签对象,返回列表类型。

参数如下:

name:按照Tag标签名字检索,名字用字符串形式表示,例如div、li;

attrs:按照Tag标签属性值检索,需要列出属性名称和值,采用JSON表示;

recursive:设置查找层次,只查找当前标签下一层时使用recursive=False;

string:按照关键字检索string属性内容,采用string=开始;

limit:返回结果的个数,默认返回全部结果;

如下:

1927119-20201116234108204-1973388907.png

简单的说,BeautifulSoup的find_all()方法可以根据标签名字、标签属性和内容检索并返回标签列表,通过片段字符串检索时需要使用正则表达式re函数库。当对标签进行检索时,

属性和对应的值采用JSON格式,如:

‘src’:re.compile('jquery') 其中键值对中值的部分可以是字符串或者正则表达式。

仅用于Python学习笔记

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Sysinternals Suite 工具下载
  • python朋友圈广告怎么这么火_利用Python让你的微信朋友圈与众不同,更加高大上...
  • 这个世界,有点创新真难啊
  • python2和python3的不同点_Django python2和python3的区别
  • 笑林广记
  • python绘图库seaborn_Python 绘图总结(seaborn库的使用) (上)
  • ITCAST心法第2讲:“学”“问”之道
  • 2字节取值范围_c++的变量类型的数值范围(常用)
  • extremecomponents使用struts2国际化信息的方法
  • 如何快速找到package里的main_餐饮加盟行业如何快速找到精准客户?
  • 数据库事务性操作
  • python random库全部_python常用库之random
  • 查询中使用CASE结构
  • python制作网页服务器_基于python实现简单网页服务器代码实例
  • 转账事务
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【前端学习】-粗谈选择器
  • C++类中的特殊成员函数
  • css布局,左右固定中间自适应实现
  • IDEA 插件开发入门教程
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript标准库系列——Math对象和Date对象(二)
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Vue 重置组件到初始状态
  • WebSocket使用
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 搞机器学习要哪些技能
  • 观察者模式实现非直接耦合
  • 和 || 运算
  • 今年的LC3大会没了?
  • k8s使用glusterfs实现动态持久化存储
  • 国内开源镜像站点
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #数学建模# 线性规划问题的Matlab求解
  • $.each()与$(selector).each()
  • $forceUpdate()函数
  • (1)svelte 教程:hello world
  • (12)Linux 常见的三种进程状态
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (bean配置类的注解开发)学习Spring的第十三天
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET程序员迈向卓越的必由之路