BeautifulSoup库学习总结

本文详细介绍了如何使用BeautifulSoup库解析HTML文档,包括创建对象、标签检索、内容遍历等核心功能,适用于初学者快速掌握网页抓取技巧。

下文中soup均表示BeautifulSoup对象,tag均代指标签

1.引入第三方库:

   from bs4 import BeautifulSoup
   注意BeautifulSoup大小写

2.建立BeautifulSoup对象:

   eg:soup=BeautifulSoup('字符串','lxml')

3.格式化打印(让爬取到的HTML内容更舒服的阅读):

   soup.prettify()-------显示全部的格式化代码
   soup.tag.prettify()----显示内容中第一个出现的该标签的内容

4.标签内容可通过 soup.tag查看

   eg:soup.b---------查看b标签的内容

5.可通过 soup.find()查找第一个出现的该标签

6.可通过soup.find_all (name, attrs, recursive, string, **kwargs)查找所有该标签可加上属性名(几种参数选一种进行查找即可

Name标签名查找 Eg

soup.find_all('a’,’b’)-------找出所有a标签与b标签

正则表达式与find_all()的结合:

soup.find_all(re.compile(‘b’))--------找出所有以b开头的标签

attrs(属性查找)
在这里插入图片描述

recursive参数(bool型):是否对子孙全部检索,默认为True

string参数:<>…</>中字符串区域的检索字符串

7.tag 的属性:

   (1)name-----获取标签的名字

     (2)attrs----获取标签的属性

     (3)string---tag中包含的字符串

8.部分词义解释:

   NavigableString------Tag当中的字符串

     comment--------------NavigableString的一个子类
对于结构简单的数据适合用beautifulsoup爬取,而对于结构复杂的数据则适合用‘正则表达式’爬取数据

9.HTML内容遍历:

  • (1)下行遍历:

    <1>soup.tag.contents-------------返回儿子节点的列表,将该标签的所有子节点存入列表

                  eg: >>>soup.head.contents
                      [<title>This is a python demo page</title>]
    

    <2>soup.tag.children------------子节点的迭代类型,用于循环结构中遍历儿子节点

                       eg: >>> for child in soup.body.children:
                            print(child)
    

    <3>soup.tag.descendants---------子孙节点的迭代类型,用于循环结构中遍历所有子孙类型(注意是一个复合标签其中所有子节点全部遍历完后才去遍历另一个复合节点)

                       eg: >>> for child in soup.body.children:
                            print(child)
    
  • (2)上行遍历:

    <1> soup.tag.parent---------节点的父标签
    <2> soup.tag.parents--------节点的先辈标签的迭代类型,用于遍历先辈节点

  • (3)平行遍历:

    条件:发生在同一个父节点下的各节点间
    使用注意:平行标签之间的字符串也作为节点

    对于下列一串爬取到的代码

          <html>
             <head>
                 <title>
                      This is a python demo page
                 </title>
            </head>
            <body>
                  <p class="title">
                         <b>
                               The demo python introduces several python courses.
                         </b>
                   </p>
                   <p class="course">
    			Python is a wonderful general-purpose programming language. 
    			You can learn Python from novice to professional by tracking the following courses:
                            <a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">
                                Basic Python
                            </a>
                            and
                            <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">
                                Advanced Python
                            </a>
                    </p>
             </body>
         </html>
    

<1> soup.tag.next_sibling-------返回下一个平行节点标签,也可以连续使用

              Eg1: >>>soup.a.next_sibling  # a标签的下一个标签
                  ' and '
              Eg2: >>>soup.a.next_sibling.next_sibling
                   <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">Advanced Python</a>

<2> soup.tag.previous_sibling----返回上一个平行节点标签,可以连续使用

<3> soup.tag.next_siblings-------迭代类型,返回后续所有节点

<4> soup.tag.previous_siblings—迭代类型,返回前面的所有节点(注意是同一个父标签下的平行节点)

<think>我们正在回答用户关于requestsBeautifulSoup是什么的问题。 根据之前的引用,我们可以总结如下: 引用[1]提到:使用import requests和from bs4 import BeautifulSoup来验证这两个是否可用。 引用[2]:《Python爬取求职网第二天》——requestsBeautifulSoupBeautifulSoupPython里的第三方,处理数据十分实用,有了这个,我们就可以根据网页源代码里对应的HTML标签对数据进行有目的性的提取。BeautifulSoup一般requests搭配使用。 引用[3]:Python 课程7-requests和BeautifulSoup。通过本教程,我们学习Python网络编程的核心知识。从使用requests发送网络请求,到调用API并处理返回的数据,再到利用BeautifulSoup进行网页解析和信息提取。 引用[4]:Python中利用requestsBeautifulSoup实现Web抓取和数据爬取。使用BeautifulSoup可以解析HTML和XML文档。 引用[5]:Python爬虫基础学习,requestsBeautifulSoup基础及一般元素提取方法。 因此,我们可以这样介绍: 1. requests:是一个用于发送HTTP请求的Python第三方,它使得Web服务交互变得简单。我们可以使用它来获取网页内容(HTML)、调用API等。 2. BeautifulSoup:是一个用于解析HTML和XML文档的,它能够从这些文档中提取数据。它通常requests配合使用,先由requests获取网页,然后由BeautifulSoup解析网页内容。 我们将按照以下结构回答: 1. 分别介绍两个 2. 它们如何配合使用(爬虫的基本步骤) 3. 简单示例 注意:在回答中,我们要在适当的地方添加引用标识,例如[^2][^3][^4]。 同时,按照要求,生成相关问题。 另外,注意用户之前的问题是关于读取酷狗top500歌单并导出,但现在的问题是关于这两个的介绍,所以我们要切换话题。</think>### requestsBeautifulSoup介绍 #### 1. requests **requests**是Python中最常用的HTTP客户端,用于发送各种HTTP请求(GET/POST等)并处理响应。它的核心功能包括: - 发送HTTP请求并获取响应内容(文本/二进制/JSON) - 支持HTTPS、会话保持和Cookie管理 - 处理URL参数和表单数据 - 设置请求头(如User-Agent)和超时控制 - 处理重定向和状态码(如200/404) ```python import requests # 发送GET请求示例 response = requests.get('https://www.example.com', headers={'User-Agent': 'Mozilla/5.0'}) print(response.status_code) # 200 print(response.text[:100]) # 输出网页前100符 ``` 在爬虫中,requests负责**获取网页原始数据**,是网络通信的基础工具[^2][^3]。 #### 2. BeautifulSoup **BeautifulSoup**是专用于解析HTML/XML文档的,核心功能包括: - 将复杂HTML转换为树形结构(解析器支持lxml/html.parser等) - 通过标签名、属性、CSS选择器定位元素 - 提取文本内容、属性值等数据 - 处理嵌套标签和文档导航 ```python from bs4 import BeautifulSoup # 解析HTML示例 html_doc = "<html><body><h1 id='title'>Header</h1><p class='content'>Text</p></body></html>" soup = BeautifulSoup(html_doc, 'html.parser') print(soup.h1.text) # 输出: Header print(soup.find('p')['class']) # 输出: ['content'] print(soup.select_one('#title')) # CSS选择器定位 ``` 在爬虫中,BeautifulSoup负责**从原始HTML中提取结构化信息**,是数据清洗的关键工具[^4][^5]。 #### 3. 协同工作流程 两者配合完成爬虫核心任务: ```mermaid graph LR A[requests发送请求] --> B[获取HTML响应] B --> C[BeautifulSoup解析HTML] C --> D[提取目标数据] ``` 典型代码结构: ```python import requests from bs4 import BeautifulSoup url = 'https://example.com' response = requests.get(url) # 1. 获取网页 soup = BeautifulSoup(response.text, 'html.parser') # 2. 解析 # 3. 提取数据(示例) titles = [h2.text for h2 in soup.select('h2.title')] ``` #### 4. 关键特性对比 | | 主要作用 | 输入/输出 | 依赖关系 | |---------------|-------------------------|-----------------------|--------------| | **requests** | 网络通信 | URL → HTML/JSON | 无需额外依赖 | | **BeautifulSoup**| 文档解析/数据提取 | HTML → 结构化数据 | 需指定解析器 | > 这对组合覆盖了爬虫工作流中**数据获取→数据解析**的核心环节,是Python爬虫开发的基础工具链[^3][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值