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

Python爬虫bs4的基本使用

BS4是Python中一个用于从HTML或XML文件中提取数据的库,它提供了一种方便的方法来解析、遍历、搜索、修改文档的树形结构。

一、安装导入:

使用包管理器进行安装:

pip3 install beautifulsoup4

导入:

from bs4 import BeautifulSoup

beautifulsoup的解析器:html.parser、lxml、html5lib

默认为:html.parser

二、基本语法及案例

由于bs是针对标签提取数据,所以主要语法是围绕着标签的

比如有如下一组数据:

html='''
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
'''

BeautifulSoup(html, 'lxml')这行代码实际上是在调用BeautifulSoup类并创建一个新的对象,该对象代表了整个HTML或XML文档的内容。这个对象被赋值给变量soup,之后你就可以使用soup来访问和操作文档的内容了。

soup=BeautifulSoup(html,'lxml')

参数一是目标数据参数二是解析器。此时soup中就放了完整结构的html数据。

接下来我们就可以对数据操作了。

比如我们要拿到title标签,打点调用即可:

print(soup.title)

输出:

<title>The Dormouse's story</title>

如果只想要内部的文字,需要string属性:

print(soup.title.string)

如果想得到标签的名字,需要name属性:

print(soup.title.name)

attrs会返回标签中的所有属性,返回的值是字典,这样我们就可以对属性进行操作了,还会根据属性的性质决定返回的类型。比如我们想得到p标签的name属性值:

print(soup.p.attrs['name'])

这样就会得到:dromouse,其他属性值获取方式也相同,但返回值类型不同,比如class这种属性值可以复用的,可能出现多个所以会返回一个列表类型,而name返回的是字符串类型。

如果页面中有重复的标签,比如p标签,那么使用本文方式只能获得第一个。


http://www.kler.cn/news/324653.html

相关文章:

  • Android平台如何获取CPU占用率和电池电量信息
  • Unity 与虚幻引擎对比:两大游戏开发引擎的优劣分析
  • 【工具变量】无废城市试点DID数据集(2000-2023)
  • 【C++笔记】八、结构体 [ 4 ]
  • 六练习题笔记
  • C++启动其它进程的方式
  • 【运动控制】关于GPIO通用输入口的锁存功能
  • RTX 5090、5080规格完整曝光,来看来看
  • 一起搭WPF界面之界面切换绑定
  • 深度学习之开发环境(CUDA、Conda、Pytorch)准备(4)
  • 基于SSM茶叶科普管理系统JAVA|VUE|SSM计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • PREDATOR: Registration of 3D Point Clouds with Low Overlap
  • DeepSS2GO——基于 CNN 的模型可以根据化学键预测蛋白质的功能
  • JPA + Thymeleaf 增删改查
  • 【Element-UI】实现el-drawer抽屉的左右拖拽宽度
  • ​美​团​一​面​-​2​
  • 《中国电子报》报道: 安宝特AR为产线作业者的“秘密武器
  • 一种用于常开型智能视觉感算系统的极速高精度模拟减法器
  • c++模拟真人鼠标轨迹算法
  • css实现自定义静态进度条-vue2
  • 【Elasticsearch】-dense_vector与hnsw的含义
  • idea 创建多模块项目
  • 探索基因奥秘:汇智生物如何利用组蛋白甲基化修饰测序技术革新农业植物基因组研究?
  • Hadoop三大组件之MapReduce(二)
  • matlab-对比两张图片的RGB分量的差值并形成直方图
  • 二次记录服务器被(logrotate)木马入侵事件
  • Redis实践之高级用法:管道、消息队列、事务、分布式锁
  • docker搭建clickhouse并初始化用户名密码
  • 【NLP】基于“检测器-纠错器”中文文本纠错框架
  • 大语言模型(LLM)效率优化技术全面综述:模型优化、数据优化、框架优化