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

python爬虫-bs4

python爬虫-bs4

目录

  • python爬虫-bs4
    • 说明
      • 安装
      • 导入
    • 基础用法
      • 解析对象
      • 获取文本
      • Tag对象
        • 获取HTML中的标签内容
        • find参数
        • 获取标签属性
        • 获取所有标签
        • 获取标签名
        • 嵌套获取
        • 子节点和父节点

说明

BeautifulSoup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据

在爬虫项目中经常会遇到不规范、及其复杂的HTML代码

BeautifulSoup4提供了强大的方法来遍历文档的节点以及根据各种条件搜索和过滤文档中的元素。你可以使用CSS选择器、正则表达式等灵活的方式来定位和提取所需的数据

安装

pip install BeautiifulSoup4

导入

from bs4 import BeautifulSoup

基础用法

解析对象

soup = BeautifulSoup('目标数据','解析器')

目前有三种主流解析器

  • html.parser
  • lxml(推荐)
  • html5lib

获取文本

获取文本的方法两种方式textcontents

contents

from bs4 import BeautifulSoupdata = """
<h1>Welcome to BeautifulSoup Practice</h1><div class="article"><h2>Article Title</h2><p>This is a paragraph of text for practicing BeautifulSoup.</p><a href="https://www.example.com">Link to Example Website</a>
"""
soup = BeautifulSoup(data, 'lxml')
print(soup.contents)
# 输出:
"""
[<html><body><h1>Welcome to BeautifulSoup Practice</h1>
<div class="article">
<h2>Article Title</h2>
<p>This is a paragraph of text for practicing BeautifulSoup.</p>
<a href="https://www.example.com">Link to Example Website</a>
</div></body></html>]
"""

text

print(soup.text)
"""
Welcome to BeautifulSoup PracticeArticle Title
This is a paragraph of text for practicing BeautifulSoup.
Link to Example Website
"""

Tag对象

获取HTML中的标签内容

比如<p> <div>

示例:

print(soup.h2)
# <h2>Article Title</h2>print(soup.h2.text)
# Article Title
find参数

获取class要加下划线,因为在python中它属于关键字,除了class还可以换成任意属性名

data = """
<h1>Welcome to BeautifulSoup Practice</h1><div class="article"><p>This is a paragraph of text for practicing BeautifulSoup.</p></div><div class="ex2"><p>This is a abcd.</p></div>
"""
soup = BeautifulSoup(data, 'lxml')
print(soup.find('div', class_='article'))
获取标签属性
data = ' <p id = "apple">This is a paragraph of text for practicing BeautifulSoup.</p>'
soup = BeautifulSoup(data, 'lxml')
tag = soup.find('p')
print(tag.get('id'))
# apple
获取所有标签
soup = BeautifulSoup(data, 'lxml')
print(soup.find_all('p'))
# [<p>This is a paragraph of text for practicing BeautifulSoup.</p>, <p>This is a abcd.</p>]print(len(soup.find_all('p')))
# 2

括号为空则获取全部标签

获取标签名
print(soup.div.name)
# div
嵌套获取

示例HTML如下

html = '''
<div class="article"><h2>Article Title</h2><p>This is a paragraph of text for practicing BeautifulSoup.</p><p>This is a abcd.</p><a href="https://www.example.com">Link to Example Website</a>
</div>
'''

目标:获取div下的所有p标签内容

print(soup.find('div', class_='article').find_all('p'))
子节点和父节点
soup = BeautifulSoup(data, 'lxml')
# 遍历获取所有父节点
for item in soup.p.parents:print(item)# 遍历获取所有子节点
for i in soup.p.children:print(soup.p.children)
http://www.lryc.cn/news/327577.html

相关文章:

  • SpringBoot学习之ElasticSearch下载安装和启动(Mac版)(三十一)
  • OC对象 - Block解决循环引用
  • Java设计模式之装饰器模式
  • Java基础知识总结(25)
  • Vue3 实现基于token 用户登录
  • 在word中显示Euclid Math One公式的问题及解决(latex公式,无需插件)
  • 江协科技STM32:按键控制LED光敏传感器控制蜂鸣器
  • 最佳矢量绘图设计软件Sketch for Mac v99.5 最新中文激活版
  • 【IntelliJ IDEA】运行测试报错解决方案(附图)
  • 【Kotlin】List、Set、Map简介
  • OpenCV 形态学处理函数
  • 互联网摸鱼日报(2024-03-27)
  • 2014年认证杯SPSSPRO杯数学建模B题(第二阶段)位图的处理算法全过程文档及程序
  • C++基本语法
  • Node Sass does not yet support your current environment
  • 长陆工业自动控制系统邀您到场参观2024第13届生物发酵产品与技术装备展
  • 数据仓库——维度表更新
  • Web3创作整理 - 2024-02-23 ~ 2024-03-25
  • CSS(一)---【CSS简介、导入方式、八种选择器、优先级】
  • 智慧公厕解决方案打造更加智能的卫生空间
  • 美团0316春招笔试题
  • typescript 实现RabbitMQ死信队列和延迟队列 订单10分钟未付归还库存
  • 怎样才能把重建大师的空三导进去CC?
  • 命令模式(请求与具体实现解耦)
  • 开发一款MMOARPG难度到底有多大
  • RTSP应用:实现视频流的实时推送
  • Java八股文(数据结构)
  • ActiveMQ Artemis 系列| High Availability 主备模式(消息复制) 版本2.19.1
  • QGIS插件系列--WhiteBox Tools
  • SpringMVC设置全局异常处理器