Python爬虫2——BeautifulSoup

【Python网络爬虫】Python维基百科网页抓取(BeautifulSoup+Urllib2) 本文,我们使用Python中的`“BeautifulSoup`”和`“urllib2”`来研究web抓取方法。 我们也研究了HTML的基础知识,同时一步一步地执行网页抓取。 快用它来从网页收集数据吧! 阅读详情

一、什么是BeautifulSoup

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库。在爬虫领域用的比较多,能够帮助我们从HTML文件中提取特定的内容,来进行分析。

二、简单实用BeautifulSoup

from bs4 import BeautifulSoup
from urllib.request import urlopen
import lxml

# 返回一个经过lxml解析的BeautifulSoup对象,
# BeautifulSoup 对象表示的是一个文档的全部内容
soup = BeautifulSoup(html, "lxml")

三、BeautifulSoup中的对象

<html>
    <head>
        <title>
            The Dormouse's story
        </title>
    </head>
        <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>
           <p class="story">
              ...
          </p>
    </body>
</html>

1、Tag对象

Tag 对象与XML或HTML原生文档中的tag相同。是一个Tag对象。

from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<b class="boldest">Extremely bold</b>', 'lxml')

# 返回一个tag实例,代表整个标签,包括标签的名字,属性和内容
>>> soup.b
<b class="boldest">Extremely bold</b>
>>> type(soup.b)
<class 'bs4.element.Tag'>

# tag为Tag的一个实例,通过BeautifulSoup对象获取
>>> tag = soup.b
# 获取tag对应的属性值
>>> tag["class"]
['boldest']
# 获取tag对应的内容
>>> tag.string
'Extremely bold'
# 获取tag的名字
>>> tag.name
'b'
# 获取tag的全部属性
>>> tag.attrs
{'class': ['boldest']}

2、Navigable对象

字符串就是标签的内容,这在BeautifulSoup中被称之为Navigable对象。例如:<b class="boldest">Extremely bold</b>,中对象为Extremely bold。该对象可以通过tag.string获取。

>>> soup = BeautifulSoup('<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>', 'lxml')
>>> tag = soup.a
>>> tag.string
'Lacie'
>>> tag.name
'a'
>>> tag.attrs
{'class': ['sister'], 'href': 'http://example.com/lacie', 'id': 'link2'}
>>> tag["href"]
'http://example.com/lacie'

3、BeautifulSoup对象

BeautifulSoup 对象表示的是一个文档的全部内容。通过soup.Tag可以返回一个Tag标签对象。

4、Comment对象

四、遍历文档树

子节点

一个Tag可能包含多个字符串或其它的Tag,这些都是这个Tag的子节点.Beautiful Soup提供了许多操作和遍历子节点的属性.注意: Beautiful Soup中字符串节点不支持这些属性,因为字符串没有子节点。

通过soup.tagName便可以获得该标签的全部内容。例如:

>>> html_doc = """
<html><head><title>The Dormouse's story</title></head>

<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 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>
"""

# 根据tag名字寻找特定的子节点
>>> soup = BeautifulSoup(html_doc, 'lxml')
>>> soup.head
<head><title>The Dormouse's story</title></head>
>>> soup.title
<title>The Dormouse's story</title>
# 存在多个标签时,只输出第一个标签
>>> soup.a
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
# 通过.来取得标签内的标签
>>> soup.head.title
<title>The Dormouse's story</title>
# 取标签p时,会取到第一个标签,但是第一个标签p没有a标签,所以输出结果为None
>>> soup.p.a
>>> 
>>> 


# .contents属性获取子节点
>>> soup.p.contents
[<b>The Dormouse's story</b>]
>>> soup.a.contents
['Elsie']
>>> soup.html.contents
[<head><title>The Dormouse's story</title></head>, '\n', <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="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
</body>]

tag属性

# tag的 .contents 属性可以将tag的子节点以列表的方式输出:
>>> soup.p.contents
[<b>The Dormouse's story</b>]
>>> soup.a.contents
['Elsie']

# 

 

Python网络爬虫与信息提取学习记录(2)——关于BeautifulSoup库的用法 BeautifulSoup库是解析、遍历、维护“标签树”的功能库。一个功能强大的爬虫库,不用正则就能方便的实现对网页具体信息的抓取。引用:        import bs4  (注意不是:import BeautifulSoup4)        from bs4 import BeautifulSoup(python是大小写敏感的语言,注意B和H的大写)BeautifulSoup类的基本元素:... 阅读详情

相关推荐

python的urllib2和beautifulsoup编写爬虫

首先下在:pip install beautifulsoup4 我这里爬取的是Python2.7的廖雪峰老师的教程首先介绍项目的流程: 1.我这里首先是将需要爬取的内容爬出后放到了download_dir目录下,此时,文件中的img的图片路径是错的,所以要修改 2.img的路径修改分为线上和本地:线上:链接为网上的url。本地:首先下载图片到本地 3.线上:读取文件中download_dir

w3045872817的博客 2018

Python BeautifulSoup简介

1.BeautifulSoup简介 BeautifulSoup是一个可以从HTML或XML文件中提取数据的python库;它能够通过转换器实现惯用的文档导航、查找、修改文档的方式。 BeautifulSoup是一个基于re开发的解析库,可以提供一些强大的解析功能;使用BeautifulSoup能够提高提取数据的效率与爬虫开发效率。 2.BeautifulSoup总览 构建文档树 Beautifu...

shifengboy的博客 997

Python实现的PM2.5空气质量爬虫教程

网络爬虫(Web Crawler)是一种自动化脚本或程序,用于从互联网上抓取信息。它们模仿人类用户的行为,访问网页,解析内容,并将数据保存至本地或数据库中。在数据挖掘、信息聚合、搜索引擎等领域,爬虫扮演着至关重要的角色。中间件是Scrapy的一个重要概念,允许我们修改Scrapy请求和响应的处理过程。

weixin_35949153的博客 682

python中beautifulsoup是什么,Python Beautiful Soup简介

Beautiful Soup简介Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.BeautifulSoupBeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,它支持 遍历文档树 和 搜索文档树 中描述的大部分的方法.因为 BeautifulSo...

weixin_34957608的博客 1172

CCS环境下ADC采样波形的实时可视化调试技巧

本文详细介绍了在CCS环境下实现ADC采样波形实时可视化的调试技巧。通过数组缓存优化、多通道同步显示和波形测量工具的高级用法,帮助开发者高效调试嵌入式系统中的ADC采样问题,提升信号分析的准确性和效率。

weixin_33712987的博客 419

ANSYS Sherlock新手避坑:从ODB++文件导入到属性匹配的完整流程(附官方教程路径)

本文详细解析了ANSYS Sherlock从ODB++文件导入到属性匹配的完整流程,帮助新手避开常见陷阱。内容包括环境准备、官方教程使用技巧、ODB++导入关键检查点、属性验证策略及常见报错解决方案,特别强调了路径设置和材料匹配的重要性,提升仿真效率。

weixin_42519781的博客 454

python爬虫之Beautifulsoup模块用法详解

什么是beautifulsoup: 是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。(官方) beautifulsoup是一个解析器,可以特定的解析出内容,省去了我们编写正则表达式的麻烦。 这里我们用的是bs4: 1、导入模块: from bs4 import beautifulsoup 2、选择解析器解析指定内容: s...

wulishinian的博客 2728

用Python手把手教你实现一个多层感知机(MLP)——从理论到代码实战

本文详细介绍了如何使用Python和Theano库从零开始实现多层感知机(MLP),涵盖从核心原理到代码实战的全过程。通过构建隐藏层、输出层和完整MLP模型,结合权重初始化、激活函数选择和训练技巧,帮助开发者深入理解神经网络工作机制,并应用于实际机器学习任务。

web39explorer的博客 970

Python中安装Beautiful Soup库及其相关解析器的方法2-2

在弹出的“Available Package”对话框中,输入“BeautifulSoup4”,如图13①所示,之后选中该模块,如图13②所示,最后点击左下角的“install package”,安装BeautifulSoup库,如图13所示。之后,在打开的“Settings”对话框中选择左侧的“Project:XXX->Python Interpreter”,如图12①所示,之后点击对话框右侧的“+”号,如图12②所示。点击图14中的“OK”按键,关闭该窗口,此时代码已经不再报错,如图15所示。......

hou09tian的博客 2815

使用MATLAB结合EasySpin进行ESR模拟的详细步骤及示例代码

安装EasySpin:确保你已经安装了EasySpin工具箱,它可以帮助你进行ESR模拟。你可以从EasySpin的官方网站(https://easyspin.org/)下载并安装。准备实验数据:将实验得到的EPR数据整理成合适的格式,一般包含磁场(Magnetic Field)和信号强度(Intensity)两列。进行模拟:使用EasySpin的函数对单线态氧自由基和超氧自由基进行模拟。调整参数:通过调整模拟参数,使模拟得到的峰型和峰位置与实验数据尽可能匹配。导出数据。

AI的内部世界的博客 2004

YOLO蒸馏原理篇之---MGD、CWD蒸馏

本文详细介绍了特征蒸馏中的两种经典有效方法,MGD和CWD蒸馏

qq_41920323的博客 3240

Python爬虫(三)- BeautifulSoup 安装与使用教程

本篇文章将详细介绍BeautifulSoup的基本概念、安装步骤、解析器的比较,以及如何使用该库解析HTML文档。我们将通过实际示例演示如何使用BeautifulSoup获取标签、属性和内容,帮助读者快速上手并应用于实际项目中。是一个用于解析 HTML 和 XML 文档的 Python 库,它帮助你从网页中提取数据。这个库非常灵活,并且可以与多种不同的解析器一起工作,比如 Python 内置的lxml或者html5lib。pythonrequestsbs4soupsievelxml版本。

zcs2312852665的博客 5646

31.华为路由器:PPPOE配置模拟实验及NAT配置

实验环境 pppoe-client上面的接口信息 [AR1]dis ip interface brief *down: administratively down ^down: standby (l): loopback (s): spoofing The number of interface that is UP in Physical is 2 The number of interface that is DOWN in Physical is 1 The number of interface

迷逝 8116

Python-网络爬虫之BeautifulSoup(2)

1.find与findAll函数 2.导航树

xiaohukun的博客 438

【Dify】PPT生成工具应用

本文介绍了一款自动化PPT生成工具,通过智能接口将文本内容高效转化为结构化演示文档。该系统采用三阶段工作流(内容输入、HTTP请求上传、文件输出),无需复杂操作即可生成专业PPT。工具适用于教学课件、产品发布、企业培训等场景,能显著提升内容表达效率,特别适合初学者快速制作演示材料。文章详细说明了核心节点、应用场景及开发资源,为文本到PPT的自动化转换提供了实用解决方案。

Mr数据杨 1216

瑞芯微RK3588/RK3576平台采集BT1120(fpga)驱动调试记录

本文介绍了在RK3576/RK3588平台上采集FPGA传输的BT1120数据的方法。主要内容包括:1)硬件连接需确认管脚复用和图像格式(通常为uyvy_2x8);2)设备树配置要点,如I2C总线设置、BT1120模式指定等;3)驱动适配注意事项,包括时钟极性、分辨率格式等关键参数;4)测试方法,通过media-ctl和v4l2-ctl工具验证数据采集。文中特别指出RK3576和RK3588配置的通用性,并提供了常见问题的排查思路。

bingdund的博客 913

python网络爬虫2——BeautifulSoup库信息提取

一、安装 cmd :pip install beautifulsoup4 from bs4 import BeautifulSoup #BeautifulSoup是一个类 soup = BeautifulSoup('<p>data</p>', 'html.parser') #'<p>data</p>'是需要解析的html格式的信息,'html...

th839582740的博客 346

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python3实现网络爬虫(3)--BeautifulSoup使用(2)

在这一次的内容中,我们继续讨论BeautifulSoup的一些操作,我们这次只讨论几个在实践中用处特别大的几个函数。

陌上行走的博客 7364

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python怎么做网络爬虫_如何用Python做一只网络爬虫?

今天要跟大家分享的是一个有趣的且有效的工具——网络爬虫(WebScraping)。首先跟大家简短的介绍一下,网络爬虫是一种数据挖掘的方法,可以从网络中抓取海量的数据,并把它存储在本地的系统中。在当前流行的机器学习中也不乏它的应用,它提供了一种搜集数据的手段,毕竟如今时互联网的时代,互联网上有着取之不尽的数据。至于它的其他用途,那就考验你的想象力噜~现在,我们要做的用爬虫在网上下载几十篇我一直没抽出...

weixin_34792402的博客 406

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python自动抓取_基于python实现的网络爬虫功能:自动抓取网页介绍

1. 网络爬虫的定义网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就...

weixin_31741827的博客 1997

python网络爬虫

Python网络爬虫简明教程 通过本教程可以快速了解网络爬虫过程,对一般性数据抓取有启发意义。

王定桥的专栏 8874

python3 beautifulsoup 简化网页元素_《Python网络爬虫》3.2 BeautifulSoup基本元素

我们知道BeautifulSoup库是能够解析html和xml文件的功能库,那么我们该怎么理解它呢?我们以html文件为例,任何一个html文件,如果打开它的源代码,我们都能看到。它是由一组尖括号构成的标签组织起来的,这里边每一对尖括号形成了一个标签,而标签之间存在上下游关系,形成了一个标签树。所以我们可以说BeautifulSoup库是解析、遍历、维护标签树的功能库。只要你提供的文件是标签类型,...

weixin_42395725的博客 126

python网络爬虫Simple(2) requests和beautifulsoup4安装和使用

1 requests 1.1 requests packages简介 requests. 库 基于 urllib开发。 requests的主要方法: requests.request() 构造一个请求,支持以下各种方法 requests.get() 获取html的主要方法 requests.head() 获取html头部信息的主要方法 requests.post() 向html网页提交post请求...

afei8080的专栏 1011

python自学网络爬虫_【爬了个爬——学习Python网络爬虫】1.抓取页面

建立一个网络爬虫程序,最重要的事情就是:明确我要抓取什么,以及怎样抓取。大部分情况下,我们会希望抓取到网页中包含某些关键字的内容或者某些url,首先要实现的是对单个网页实行抓取。我们以一个具体的应用为例:如何的得到cnblog中某个人博客中所有随笔的题目以及连接。首先,我们要得到需要进行爬虫操作的网页地址,通过python系统库内的urllib2这个Module获得对应的HTML源码。import...

weixin_39692245的博客 226

python selenium爬虫效率_浅谈Python网络爬虫

一 相关背景网络爬虫(WebSpider)又称网络蜘蛛、网络机器人,是一段用来自动化采集网站数据的程序。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络爬虫不仅能够为搜索引擎采集网络信息,而且还可以作为定向信息采集器,定向采集某些网站下的特定信息,如:汽车票价,招聘信息,租房信息,微博评论等。二 应用场景图1 应用场景爬虫技术在科学研究、Web安全、产品研发、舆情监控等...

weixin_39981400的博客 979

【笔记】慕课-Python网络爬虫与信息提取-BeautifulSoup库(2)

JSON 有类型键值对 带有引号 一对一 “key”:“value” 一对多 “key”:[“value1”,“value2”] 嵌套 “key”:{“subkey”:“subvalue”} YAML 无类型键值对,没有任何引号和括号 常用于配置文件 缩进表示所属关系 "-"表示同级并列关系 key:value key:#Comment -value1 -value2 key: subkey:subvalue 方法 < tag >.find_all(name,attrs,recursive,

shupppppppy的博客 242
上一篇: HTML系列2——标签
下一篇: 2020-12-05
ilgfcyll
博客等级 码龄9年 14粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值