首页 > 其他分享 >BeautifulSoup模块的使用方法

BeautifulSoup模块的使用方法

时间:2023-03-17 14:12:00浏览次数:37  
标签:res BeautifulSoup soup 模块 print 方法 find css

本篇文章主要讲bs4模块(BeautifulSoup),这个模块能做么呢?用一句话来概括的话:beautifulsoup4 从HTML或XML文件中提取数据的Python库,用它来解析爬取回来的xml。从而从网站中精准爬取自己想要的内容。
它是Python的第三方模块,因此需要下载

pip install pip install beautifulsoup4

这个模块与另一个lxml(解析库)模块配合这个用

pip install lxml

最基本用法

html_doc = '需要解析的HTML内容'
soup = BeautifulSoup(html_doc, 'lxml')

一、BeautifulSoup遍历文档树

1. 美化,不是标准xml,完成美化
print(soup.prettify())

2. 遍历文档树(通过点来遍历)
print(soup.html.body.p)  # 一层一层找

3. 获取标签的名称
print(soup.a.name)

4. 获取标签的属性
print(soup.a.attrs.get('class'))

5. 获取标签的内容
print(soup.p.text)
print(list(soup.p.strings)) # generator

二、BeautifulSoup搜索文档树

2. 通过find或find_all来搜索

# 1 字符串--->查询的条件是字符串
res=soup.find_all(name='p')
res=soup.find_all('p')
print(res)

# 2 正则表达式
import re
res=soup.find_all(class_=re.compile('^s'))
print(res)

# 3 列表
res=soup.find_all(id=['link1','link2'])
print(res)
print(soup.find_all(name=['a','b']))
print(soup.find_all(['a','b']))


# 4 True
res=soup.find_all(id=True)  # 所有有id的标签
res=soup.find_all(href=True)
res=soup.find_all(class_=True)
print(res)

3. 通过css选择器来搜索

其实css选择器是前端重点内容,但是对于后端程序员而言会用就行,这里我放大招哈哈哈
首先去浏览器右键检查、然后用定位箭头定位目的地、点击对用的HTML右键、选择copy、再现在copy selector 按照这个步骤就快速得到一个css选择器咯,css选择器大痛点解决之后,接下来咱看一下如何用css选择器搜索文档树吧,具体请看如下代码框

from bs4 import BeautifulSoup
import requests
res=requests.get('https://www.w3school.com.cn/css/css_selector_attribute.asp')
soup=BeautifulSoup(res.text,'lxml')
print(soup.select('#intro > p:nth-child(1) > strong')[0].text)

标签:res,BeautifulSoup,soup,模块,print,方法,find,css
From: https://www.cnblogs.com/almira998/p/17226553.html

相关文章

  • 利用内置模块sched实现定时任务
    sched模块实现了一个通用事件调度器,在调度器类使用一个延迟函数等待特定的时间,执行任务。同时支持多线程应用程序,在每个任务执行后会立刻调用延时函数,以确保其他线程也能执......
  • ansible group模块
    目录ansiblegroup模块模块用法yml模版ansiblegroup模块模块用法yml模版-name:验证auditors组是否存在group: name:auditors state:present......
  • ansible authorized_key模块
    目录ansibleauthorized_key模块使用模版修改sudoers和禁止root用户登录ansibleauthorized_key模块复制公钥,设置免密登录的作用使用模版-name:setauthorizedkey......
  • p标签单行文本溢出和多行文本溢出显示省略号解决方法
    单行p{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}多行//多行显示省略号,数字3为超出3行显示,p{ display:-webkit-box; -webkit-box......
  • 将一个普通方法改写为异步方法
    如何将一个普通方法改写成异步方法? ///<summary>///把一个普通无参,无返回值的方法转为异步方法///</summary>///<paramname="srcAct......
  • SAP B1 一输入字符就卡死的解决方法
    一开始遇到这种情况,以为是DI没装好,重新把客户端装了一遍,重新运行,还是不行。最后考虑到是不是输入法的问题,WIN10系统,对准右下角输入法位置,直接右键,【设置】,然后找到【兼容......
  • 设计模式5——模板方法模式
    1、定义模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。2、核心在抽象父类中封装子类的算法框架,它的init方法可作为一个算法的模板,指导子......
  • Centos7系统在开启进入系统报错:Give root password for maintenance(or type Control-D
    报错信息:在进入系统时,不能正常进入系统,出现了Giverootpasswordformaintenance(ortypeControl-Dtocontinue):的报错。 报错原因:1、在之前写入的/etc/fstab文件有......
  • arduino 蓝牙模块测试
    今天在chatgpt的高效查询下顺利地测试了arduino的蓝牙功能: 蓝牙模块(JDY-31):原材料ArduinoUNO开发板x1蓝牙模块JDY-31x1子母杜邦线若干马达/LED灯x1(本次用的......
  • spring小知识点--Bean的初始化方法和销毁方法该如何设置
    1.含义如果仅仅看属性名称的话,那就是指AbstractBeanDefinition类中initMehtodName和destroyMethodName,但我们这里想说的是有哪些初始化以及销毁方式;2.设置方式2.1@......