Beautiful Soap 使用注意事项

嗅事百科抓取段子的两种方法--BeautifulSoap抓取并解析网页流程 一、BeautifulSoap1.首先必须要导入bs4库,创建BeautifulSoap对象#coding=utf-8 from bs4 import BeautifulSoup soup = BeautifulSoup(html,'lxml') #html 为下载的网页,lxml为解析器 2.BeautifulSoap主要掌握三种方法find_all('tag')    搜索当前所有的tag... 阅读详情

最全教程:Beautiful Soup 4.4.0 文档 — Beautiful Soup 4.2.0 中文 文档

备用网址:https://github.com/DeronW/beautifulsoup/blob/v4.4.0/docs/index.rst

0. 解决中文乱码和图片加载问题

解决Requests中文乱码_chaowanghn的博客-优快云博客_requests 乱码

1. 注意html有些tag的属性是具有多值的(但凡在某个html历史版本中,被定义成为过多值属性),多值属性取用时,会以list返回。 但如果转换的文档是XML格式,那么tag中不包含多值属性

勘误:官方文档在讲解Tag属性时,最开始的class属性全为字符串,是不对的。

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
>>> soup.b['class']
['boldest']
>>> tag = soup.b
>>> tag['class']
['boldest']
>>> tag.attrs
{'class': ['boldest']}
>>>


>>>xml_soup = BeautifulSoup('<p class="body strikeout"></p>', 'xml')
>>>xml_soup.p['class']
u'body strikeout'
>>>

2. ele.prettify()会把元素结构化输出(按层次分行),注意,和__repr__是不一样的

如果只想得到结果字符串,不重视格式,那么可以对一个 BeautifulSoup 对象或 Tag 对象使用Python的 unicode() 或 str() 方法:

str(soup)
# '<html><head></head><body><a href="http://example.com/">I linked to <i>example.com</i></a></body></html>

unicode(soup.a)
# u'<a href="http://example.com/">I linked to <i>example.com</i></a>'

>>> doc1="<html> <head>  <title>   The Dormouse's story  </title> </head></html>"
>>> soup2=BeautifulSoup(doc1,"html.parser")
>>> print(soup2)
<html> <head> <title>   The Dormouse's story  </title> </head></html>
>>> print(soup2.prettify())
<html>
 <head>
  <title>
   The Dormouse's story
  </title>
 </head>
</html>

3.节点可通过.<tag_name>的方式取得,但是通过点取属性的方式只能获得当前名字的第一个tag

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

4..contents得到子节点列表(注意,原文中的'\n'也是元素,会被分割出来,但该元素.name为None) 和 .children 得到子节点生成器。 但这两个都只能得到直接子节点,.descendants才能一层层递归得到所有子节点(返回的生成器)

>>> doc4="""
...  <body>
...  <p>p1</p>
...  <p>p2</p>
...  </body>
... """
>>> soup4=BeautifulSoup(doc4,"html.parser")
>>> soup4.contents
['\n', <body>
<p>p1</p>
<p>p2</p>
</body>, '\n']
>>> soup4.body.contents
['\n', <p>p1</p>, '\n', <p>p2</p>, '\n']
>>> doc5="""
...  <body>
...  <p>p1</p><p>p2</p>
...  </body>
... """
>>> soup5=BeautifulSoup(doc5,"html.parser")
>>> soup5.body.contents
['\n', <p>p1</p>, <p>p2</p>, '\n']


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


>>> list(soup3.body.descendants)
['\n', <p class="title"><b>The Dormouse's story</b></p>, <b>The Dormouse's story</b>, "The Dormouse's story", '\n', <p class="story">
   Once upon a time there were three little sisters; and their names were
   <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
   <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>and
   <a class="sister" href="http://example.com/tillie" id="link2">Tillie</a>
   ;and they lived at the bottom of a well.
  </p>, '\n   Once upon a time there were three little sisters; and their names were\n   ', <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, 'Elsie', ',\n   ', <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, 'Lacie', '
and\n   ', <a class="sister" href="http://example.com/tillie" id="link2">Tillie</a>, 'Tillie', '\n   ;and they lived at the bottom of a well.\n  ', '\n']

5 .string返回唯一一个子节点,不论子节点为NavigableString还是Tag。如果子节点不唯一,则返回None。 要想取出所有NavigableString对象,用.strings 或 .strped_strings(去除空白行)

>>> doc5="""
...  <a>
...  line1
...
...  line2
...
...  line3
...
...  </a>
... """
>>> soup=BeautifulSoup(doc5,"html.parser")
>>> soup.a.string
'\n line1\n \n line2\n \n line3\n \n '

>>> for line in soup.strings:
...      print(repr(line))
...
'\n'
'\n line1\n \n line2\n \n line3\n \n '
'\n'
>>>


>>> doc6="""
...  <head> line1  </head>
...  <a> line2  </a>
...  <p> line3  </p>
... """
>>>
>>> soup=BeautifulSoup(doc6,"html.parser")
>>> for line in soup.strings:
...     print(repr(line))
...
'\n'
' line1  '
'\n'
' line2  '
'\n'
' line3  '
'\n'

>>> for line in soup.stripped_strings:
...      print(repr(line))
...
'line1'
'line2'
'line3'

6. .parent得到父节点,.parents递归得到所有父节点。

7.在文档树中,使用 .next_sibling 和 .previous_sibling 属性来查询兄弟节点。tag_first没有.previous_sibling, tag_last没有.next_sibling 会返回None。
注意实际文档中的tag的 .next_sibling 和 .previous_sibling 属性通常是字符串或空白。

通过 .next_siblings 和 .previous_siblings 属性可以对当前节点的兄弟节点迭代输出 

8 .next_element 属性指向解析过程中下一个被解析的对象(字符串或tag)  .previous_element 前一个解析对象

通过 .next_elements 和 .previous_elements 的迭代器就可以向前或向后访问文档的解析内容,就好像文档正在被解析一样

9.soup.head.title 是 tag的名字 方法的简写.这个简写的原理就是多次调用当前tag的 find() 方法:

soup.head.title
# <title>The Dormouse's story</title>

soup.find("head").find("title")
# <title>The Dormouse's story</title>

同样的,tag.find_all('h1') 和 tag('h1')等价

10。 find_all() 和 find() 只搜索当前节点的所有子节点,孙子节点等

11.

find_all( name , attrs , recursive , string , **kwargs )

find( name , attrs , recursive , string , **kwargs )

find_parents( name , attrs , recursive , string , **kwargs )

find_parent( name , attrs , recursive , string , **kwargs )

find_next_siblings( name , attrs , recursive , string , **kwargs )

find_next_sibling( name , attrs , recursive , string , **kwargs )

find_previous_siblings( name , attrs , recursive , string , **kwargs )

find_previous_sibling( name , attrs , recursive , string , **kwargs )

find_all_next( name , attrs , recursive , string , **kwargs )

find_next( name , attrs , recursive , string , **kwargs )

find_all_previous( name , attrs , recursive , string , **kwargs )

find_previous( name , attrs , recursive , string , **kwargs )

12. Beautiful Soup支持大部分的CSS选择器 Selectors [6] , 在 Tag 或 BeautifulSoup 对象的 .select() 方法中传入字符串参数, 即可使用CSS选择器的语法找到tag.

13. get_text()
如果只想得到tag中包含的文本内容,那么可以嗲用 get_text() 方法,这个方法获取到tag中包含的所有文版内容包括子孙tag中的内容,并将结果作为Unicode字符串返回

增益调度控制 —— 理论、案例与交互式 GUI 实现 本文详细介绍了增益调度控制的基本原理、数学模型及公式推导,探讨了该方法在适应非线性系统和大范围工作条件下的优势与局限。通过航空飞行控制、发动机推力控制以及化工过程控制三个典型案例,我们展示了如何利用调度变量动态调整控制增益,从而使得控制系统在各个工作点均能达到优良性能。为帮助工程师和研究者更直观地理解并验证增益调度控制的实际效果,本文提供了一套基于 Python 与 PyQt6 的交互式 GUI 控制系统代码。用户不仅可以实时查看仿真数据,还能通过在线调节参数直观体验调度控制的优势。 阅读详情

相关推荐

基于Simulink的魔术公式轮胎动力学仿真

本篇博文主要用来记录汽车系统动力学课程的学习,仅供课程阶段参考,与实际工程应用还有较大距离。基于Simulink的魔术公式轮胎动力学仿真本实例主要有以下任务。1.建立魔术公式轮胎动力学仿真模型。2.绘制不同载荷下的轮胎纵向力—滑动率关系曲线。3.绘制不同载荷下的轮胎侧向力—侧偏角关系曲线。4.绘制不同载荷下的轮胎回正力矩—侧偏角关系曲线。提示:以下是本篇文章正文内容,下面案例可供参考。

shy_201992的博客 6940

『python爬虫』beautifulsoup库获取文本的方法.get_text()、.text 和 .string区别(保姆级图文)

『python爬虫』beautifulsoup库获取文本的方法.get_text()、.text 和 .string区别(保姆级图文)

MZH 1441

AI漫剧实战:MiniMaxH3本地部署+ComfyUI工作流,6G显存出长视频

随着AI视频生成技术的普及,创作者开始追求在有限硬件条件下的本地化部署。本地部署不仅降低使用成本,更能获得对生成流程的完全可控性,这为高频次的内容生产提供了基础。以开源工作流引擎ComfyUI为依托,通过量化模型与显存优化,即便是6G显存的中端显卡也能流畅运行MiniMaxH3视频生成模型,输出60秒级别的AI漫剧片段。本文从视频生成原理出发,讲解模型选择、节点搭建、参数调优与提示词结构化设计,并延伸到剧本拆分、角色一致性控制、后期合成及平台变现路径,为AI漫剧创作者提供一套低成本、可复制的工程化方案。无论

weixin_29051149的博客 161

BeautifulSoup的基本使用

BeautifulSoup是一个用于从HTML和XML文件中提取数据的python模块。BeautifulSoup模块的查找提取功能非常强大,而且使用起来非常便捷,可以节约很多时间

hacker707的博客 1万+

Buck-Boost电路实战:如何用LM2596模块快速搭建升降压电源(附元件选型指南)

本文详细介绍了如何使用LM2596模块快速搭建Buck-Boost升降压电路,包括硬件选型、电路搭建、示波器实测和进阶技巧。通过实测数据和避坑指南,帮助电子工程师解决电压不稳定、效率低下等常见问题,提升DC-DC变换器的设计水平。

weixin_30485379的博客 111

Vben Admin权限管理全解析:从动态菜单到按钮级控制(附代码示例)

本文全面解析Vben Admin框架的权限管理系统,从动态菜单生成到按钮级细粒度控制,提供完整的实现方案和代码示例。深入探讨基于角色-权限模型的架构设计,分享前后端协作的最佳实践,帮助开发者快速构建安全高效的企业级后台系统。

weixin_30919429的博客 485

BeautifulSoap基本使用

文章记录记录笔者学习BeautifulSoup过程中的一些API使用技巧。

m0_52339560的博客 1301

电磁仿真新手必看:如何用CST Studio Suite 2023完成第一个PCB辐射仿真?

本文详细解析了如何使用CST Studio Suite 2023进行PCB辐射仿真,适合电磁仿真新手快速上手。从工程准备、求解器配置到端口设置和后处理技巧,全面覆盖三维全波电磁场仿真软件的核心操作步骤,帮助工程师精准预测和解决PCB电磁辐射问题。

y7z8a9的博客 733

BeautifulSoup使用注意事项

BeautifulSoup使用注意事项 BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间. 一个爬取中国天气网数据的简单示例如下:   (http://www.weather.com.cn/we...

weixin_30691871的博客 230

FDTD仿真实战:从材料导入到反射率曲线分析

本文提供了一份完整的FDTD仿真实战指南,详细讲解了从自定义材料(如WO3)数据导入、结构建模、仿真区域与网格设置,到光源与监视器配置、运行仿真并提取反射率数据的全流程。重点解决了材料库缺失、网格优化、边界条件设置等常见难题,旨在帮助研究人员高效、准确地通过FDTD仿真获取材料的关键光学特性——反射率曲线。

elastic6hunter的博客 341

Spring Boot入门(13):Mybatis-Plus之条件构造器使用手册:精通让你快速提高查询效率的技巧!

化繁为简,MP 中条件构造器的使用,极其详细.

**My Coding Family** 3万+

Python爬虫利器之Beautiful Soup入门详解,实战总结!!!

文章目录1、简介2、解析库3、讲解3.1、Tag(标签选择器)3.2、标准选择器(find、find_all)3.2.1、find_all()3.2.2、find()3.3、Select选择器4、实战 1、简介 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间. 2、解析库 灵活又方便的网页解析库,处理高效,支持多种解析器。 利用

Code皮皮虾的博客 1万+

基于YOLOv8的铁路轨道异物检测系统设计与实现

目标检测是计算机视觉领域的核心任务之一,旨在识别图像中特定目标的位置和类别。传统方法主要依赖手工特征(如HOG、SIFT等)和分类器(如SVM),而深度学习方法通过卷积神经网络自动学习特征表示,显著提升了检测性能。YOLO(You Only Look Once)系列算法作为单阶段目标检测的代表,以其高效的检测速度著称。YOLOv8是Ultralytics公司于2023年发布的最新版本,在精度和速度上都有进一步提升。

YOLO 574

Python爬虫之Beautiful Soup库用法总结

Beautiful Soup是Python中一款强大的HTML解析库,用于从HTML文档中提取数据,提供了简单的方法来遍历、搜索和修改HTML文档,是爬虫和数据抓取任务中常用的工具。本文将介绍Beautiful Soup库的基本用法,包括如何安装、解析HTML、搜索和遍历HTML文档以及如何提取和修改HTML元素的内容,记录一下用来方便以后的学习。

qq_56864896的博客 1149

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python学习(十五) 屏幕抓取

15.1 屏幕抓取   15.1.1 Tidy和XHTML解析    Tidy:用来修复不规范且随意的HTML文档的工具。    为什么用XHTML: 和旧版本的HTML之间最主要的区别:HTML可能只用一个开始标签(<p>)结束一段然后开始下一段,而在XHTML中,首先要显示的关闭当前段落(</p>), 这种行为让XHTML更容易解析,   另外一个好处是:它是...

weixin_30908103的博客 390

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Python】BeautifulSoap抓取并解析网页流程

一、BeautifulSoap 1.首先必须要导入bs4库,创建BeautifulSoap对象 #coding=utf-8 from bs4 import BeautifulSoup soup = BeautifulSoup(html,'lxml')   #html 为下载的网页,lxml为解析器 2.BeautifulSoap主要掌握三种方法 find_all('tag')    搜索当...

小白兔的窝 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Beautiful Soup 基本使用方法

我们就来介绍一个强大的解析工具Beautiful Soup,它借助网页的结构和属性等特性来解析网页。有了它,我们不用再去写一些复杂的正则表达式,只需要简单的几条语句,就可以完成网页中某个元素的提取。 1、简介 简单来说,Beautiful Soup就是Python的一个HTML或XML的解析库,可以用它来方便地从网页中提取数据。官方解释如下: Beautiful Soup提供一些简单的、Py...

songshao の blog 6万+

Python爬虫学习之数据提取(Beautiful Soup)

Beautiful Soup是Python的一个HTML或XML的解析库,我们可以很方便的利用它从网页中提取数据。

侠~~的博客 1172

python beautifulsoap_python之beautifulsoap知识点

beautifusoap库简称bs在爬虫中比较方便。1. find_all()函数返回的是list,即使只有一个数据,find()函数返回的是查找到的第一个数据。2. 如果查找抓取数据div的参数属性,可以通过div[属性]或者div.attrs或者div.get(属性)等方法。其中attrs是一个字典形式,需要继续提取3. div.string 使用这个需要这样的条件:div标签里面有且仅有...

weixin_39940688的博客 204

Beautiful Soup4 学习教程

在学习Beautiful Soup4之前,我们先了解一下什么是Beautiful Soup。Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。Beautiful Soup会帮你节省数小时甚至数天的工作时间。如上解释来自于官网,我用大家好理解的解释来说,就是一个Python库,用来解析HTML或XML文档内容的工具。

qq_42293468的博客 1304

python beautifulsoap的安装

Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 (1)windows环境下安装 beautiful soap 1.在beautiful soap官网上下载beautiful soap最新版本“beautifulsoup4-4.5.3.tar.gz” beautiful soap官网:ht

少安的砖厂 1951

BeautifulSoup4注意事项

.findall() 按照CSS类名搜索tag的功能非常实用,但标识CSS类名的关键字 class 在Python中是保留字,使用 class 做参数会导致语法错误.从Beautiful Soup的4.1.1版本开始,可以通过 class_ 参数搜索有指定CSS类名的tag soup.find_all("a", class_="sister") # [&lt;a class="sist...

sspmii的博客 310

BeautifulSoap 安装和使用

虽然安装了pip和easy_install,但是通过它们没有安装成功BeautifulSoap,只好手动安装。 步骤: 下载地址:http://www.crummy.com/software/BeautifulSoup/bs4/download/ 下载了  Beautiful Soup 4.4.1版本 解压后安装:setup.py install 安装在 c:\python27\lib\

Keren的博客 2810

适合 Python 入门的 8 款强大工具,赶紧收藏一波!

Python是一种开源的编程语言,可用于Web编程、数据科学、人工智能以及许多科学应用。学习Python可以让程序员专注于解决问题,而不是语法。由于Python相对较小,且拥有各式各样的工具,因此比Java和C++等语言更具优势,同时丰富的库赋予了Python完成各种伟大任务所需的能力。 下面是程序员和学生最常使用的一些Python工具: IDLE 在安装Python时,默认也会安装IDLE。这是最优秀的Python工具之一。它可以降低Python入门的门槛。它的主要功能包括Python Shel

weixin_45820912的博客 295

爬虫--BeautifulSoap库

BeautifulSoap库 request库(内含高级库) 代码展示: import requests from bs4 import BeautifulSoup import re import os url = "https://www.jianshu.com/" headers1 = { "user-agent": "Mozilla/5.0 (Windows NT ...

w_lo__o的博客 456

【爬虫基础】第13讲 Beautiful Soup 的使用

Beautiful Soup 是一个用于解析 HTML 和 XML 文档的 Python 库。它能够将复杂的 HTML 和 XML 文档转化为树形结构,以方便提取所需的数据。2. 安装lxml解析器。find_all方法。3.提取内容常用方法。

a272329874a的博客 319
上一篇: 浏览器响应码总结
下一篇: 常用算法模板与知识点
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值