Python爬虫学习笔记(六)————BeautifulSoup(bs4)解析

这篇具有很好参考价值的文章主要介绍了Python爬虫学习笔记(六)————BeautifulSoup(bs4)解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.bs4基本简介

(1)BeautifulSoup简称

(2)什么是BeatifulSoup?

(3)优缺点

2.bs4安装以及创建

(1)安装         

(2)导入         

(3)创建对象

3.节点定位

(1)根据标签名查找节点

(2)函数

        ①find(返回一个对象)

        ②find_all(返回一个列表)

        ③select(根据选择器得到节点对象)【推荐】

               <1>element

                <2>.class

                <3>#id

                <4>属性选择器

                <5>层级选择器

4.节点信息

(1).获取节点内容:适用于标签中嵌套标签的结构

(2).节点的属性

(3).获取节点属性

5.实例

(1)解析本地文件生成对象

 (2)爬取星巴克网站产品图片及数据—— 解析服务器响应的文件生成对象 


1.bs4基本简介

(1)BeautifulSoup简称

                bs4

(2)什么是BeatifulSoup?

                 BeautifulSoup,和lxml一样,是一个html的解析器,主要功能也是解析和提取数据

(3)优缺点

                缺点:效率没有lxml的效率高

                优点:接口设计人性化,使用方便

2.bs4安装以及创建

(1)安装         

                pip install bs4

(2)导入         

                from bs4 import BeautifulSoup

(3)创建对象

                服务器响应的文件生成对象 

                        soup = BeautifulSoup(response.read().decode(), 'lxml')

                本地文件生成对象

                        soup = BeautifulSoup(open('1.html'), 'lxml')

                        注意:默认打开文件的编码格式gbk所以需要指定打开编码格式

3.节点定位

(1)根据标签名查找节点

        soup.a 【注】只能找到第一个a

                soup.a.name

                soup.a.attrs

(2)函数
        ①find(返回一个对象)

                find('a'):只找到第一个a标签

                find('a', title='名字')

                find('a', class_='名字')

        ②find_all(返回一个列表)

                 find_all('a') 查找到所有的a

                find_all(['a', 'span']) 返回所有的a和span,要加中括号

                find_all('a', limit=2) 只找前两个a

        ③select(根据选择器得到节点对象)【推荐】
               <1>element

                        eg:p

                <2>.class

                        eg:.firstname

                <3>#id

                        eg:#firstname

                <4>属性选择器

                        [attribute]

                                eg:li = soup.select('li[class]')

                        [attribute=value]

                                 eg:li = soup.select('li[class="hengheng1"]')

                <5>层级选择器

                        element element  (空格)

                                div p

                        element>element

                                div>p

                        element,element

                                div,p

                                        eg:soup = soup.select('a,span')

4.节点信息

(1).获取节点内容:适用于标签中嵌套标签的结构

        obj.string

        obj.get_text()【推荐】

(2).节点的属性

        tag.name 获取标签名

                eg:tag = find('li)

                        print(tag.name)

                tag.attrs将属性值作为一个字典返回

(3).获取节点属性

        obj.attrs.get('title')【常用】

        obj.get('title')

        obj['title']

5.实例

(1)解析本地文件生成对象

HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <div>
        <ul>
            <li id="l1">张三</li>
            <li id="l2">李四</li>
            <li>王五</li>
            <a href="" id="" class="a1">尚硅谷</a>
            <span>嘿嘿嘿</span>
        </ul>
    </div>


    <a href="" title="a2">百度</a>

    <div id="d1">
        <span>
            哈哈哈
        </span>
    </div>

    <p id="p1" class="p1">呵呵呵</p>
</body>
</html>

python代码文章来源地址https://www.toymoban.com/news/detail-580162.html

from bs4 import BeautifulSoup


# 通过解析本地文件 来将bs4的基础语法进行讲解
# 默认打开的文件的编码格式是gbk 所以在打开文件的时候需要指定编码
soup = BeautifulSoup(open('075_尚硅谷_爬虫_解析_bs4的基本使用.html',encoding='utf-8'),'lxml')

# 根据标签名查找节点
# 找到的是第一个符合条件的数据
print(soup.a)
# 获取标签的属性和属性值
print(soup.a.attrs)

# bs4的一些函数
# (1)find
# 返回的是第一个符合条件的数据
print(soup.find('a'))

# 根据title的值来找到对应的标签对象
print(soup.find('a',title="a2"))

# 根据class的值来找到对应的标签对象  注意的是class需要添加下划线,为了与class关键字区分
print(soup.find('a',class_="a1"))


# (2)find_all  返回的是一个列表 并且返回了所有的a标签
print(soup.find_all('a'))

# 如果想获取的是多个标签的数据 那么需要在find_all的参数中添加的是列表的数据
print(soup.find_all(['a','span']))

# limit的作用是查找前几个数据
print(soup.find_all('li',limit=2))


# (3)select(推荐)
# select方法返回的是一个列表  并且会返回多个数据
print(soup.select('a'))

# 可以通过.代表class  我们把这种操作叫做类选择器
print(soup.select('.a1'))

print(soup.select('#l1'))


# 属性选择器---通过属性来寻找对应的标签
# 查找到li标签中有id的标签
print(soup.select('li[id]'))

# 查找到li标签中id为l2的标签
print(soup.select('li[id="l2"]'))


# 层级选择器
#  后代选择器
# 找到的是div下面的li
print(soup.select('div li'))

# 子代选择器
#  某标签的第一级子标签
# 注意:很多的计算机编程语言中 如果不加空格不会输出内容  但是在bs4中 不会报错 会显示内容
print(soup.select('div > ul > li'))


# 找到a标签和li标签的所有的对象
print(soup.select('a,li'))

# 节点信息
#    获取节点内容
# select方法返回的是一个列表  并且会返回多个数据,所以要取列表第一个数据,即【0】才能获得数据
obj = soup.select('#d1')[0]
# 如果标签对象中 只有内容 那么string和get_text()都可以使用
# 如果标签对象中 除了内容还有标签 那么string就获取不到数据 而get_text()是可以获取数据
# 我们一般情况下  推荐使用get_text()
print(obj.string)
print(obj.get_text())

# 节点的属性
obj = soup.select('#p1')[0]
# name是标签的名字
print(obj.name)
# 将属性值左右一个字典返回
print(obj.attrs)

# 获取节点的属性
obj = soup.select('#p1')[0]

print(obj.attrs.get('class'))  # attrs返回属性的字典,字典的get方法
print(obj.get('class'))
print(obj['class'])
 (2)爬取星巴克网站产品图片及数据—— 解析服务器响应的文件生成对象 

import urllib.request

url = 'https://www.starbucks.com.cn/menu/'

response = urllib.request.urlopen(url)

content = response.read().decode('utf-8')


from bs4 import BeautifulSoup

soup = BeautifulSoup(content,'lxml')

# xpath方法
# //ul[@class="grid padded-3 product"]//strong/text()

#bs4
name_list = soup.select('ul[class="grid padded-3 product"] strong')

for name in name_list:
    print(name.get_text())

到了这里,关于Python爬虫学习笔记(六)————BeautifulSoup(bs4)解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python-网络爬虫.BS4

    BS4 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库, 它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方 式。 Beautiful Soup 4 官方文档: https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 帮助手册: https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/ 一、安装Beaut

    2024年02月14日
    浏览(22)
  • python爬虫8:bs4库

    前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产生不好影响。 目录结构 1. 概述与安装 ​ bs4是BeautifulSoup4的简

    2024年02月12日
    浏览(23)
  • 【Python爬虫】Python爬虫三大基础模块(urllib & BS4 & Selenium)

    参考资料 Python爬虫教程(从入门到精通) Python urllib | 菜鸟教程 Beautiful Soup 4 入门手册_w3cschool Selenium入门指南 Selenium教程 什么是 Scrapy|极客教程 Scrapy入门教程 1、网络爬虫是什么? 我们所熟悉的一系列 搜索引擎都是大型的网络爬虫 ,比如百度、搜狗、360浏览器、谷歌搜索等

    2024年02月12日
    浏览(32)
  • 【用Vscode实现简单的python爬虫】从安装到配置环境变量到简单爬虫以及python中pip和request,bs4安装

    第一步:安装python包  可以默认,也可以选择自己想要安装的路径 python下载资源链接: Download Python | Python.org 第二步: 配置python环境变量,找到我的电脑-属性-高级-环境变量 找到python,新增 然后将刚刚安装的路径配置到path路径下: 特别注意,配置了环境变量后要进行重启电

    2024年02月15日
    浏览(37)
  • Python爬虫|基础知识点详细汇总(requests、urllib、re、bs4、xpath、PyQuery、jsonpath、多线程、协程、数据保存、selenium)

    1. 请求数据 ① requests (1) 基本使用 参数 对响应内容的操作 (2) Requests进阶:使用Session 为什么要用 Session? Session代表服务器与浏览器的一次会话过程,Session对象存储了特定用户会话所需的信息 例如:一定时间内记录账号密码 (自动登录) 可以加快 requests请求速度 需要客户端登录的

    2023年04月08日
    浏览(37)
  • python的bs4模块

    Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 第三方库,它可以从 HTML 或 XML 文档中快速地提取指定的数据。Beautiful Soup 语法简单,使用方便,并且容易理解,因此您可以快速地学习并掌握它。 而 html.parser 表示解析文档时所用的解析器,此处的解析器也可以是 ‘l

    2024年02月07日
    浏览(28)
  • 【问题解决】python安装bs4后,仍然报错 ModuleNotFoundError: No module named ‘bs4‘

    我这里是windows上使用出现的问题: 使用 python3.7 : pip install bs4 后 Python37Libsite-packages 文件夹下只有 bs4-0.0.1-py3.7.egg-info ,没有 bs4 文件夹(安装过程中会有,但是安装完成后被删除了)。 会同时安装 BeautifulSoup4 ,相当于执行 pip install BeautifulSoup4 ,生成了 beautifulsoup4-4.12.0

    2024年02月03日
    浏览(31)
  • python spider 爬虫 之 解析 xpath 、jsonpath、BeautifulSoup (三)

    简称:bs4 BeautifulSoup跟lxml 一样,是一个html文档的解析器,主要功能也是解析和提取数据 优缺点 缺点:效率没有lxml的效率高 优点:接口接口人性化,使用方便 延用了css选择器 安装BeautifulSoup 1、安装:pip install bs4 2、导入:from bs4 import BeautifulSoup 3、创建bs4 对象 ① 服务器响

    2024年02月11日
    浏览(38)
  • python---------bs4爬取数据的一种神器

     欢迎小可爱们前来借鉴我的gtieehttps://gitee.com/qin-laoda Beautiful Soup的简介 解析⼯具对⽐ BeautifulSoup的基本使⽤ 解析器 搜索⽂档树 CSS常⽤选择器介绍 select和css选择器提取元素 _______________________________________________ 前面我已经介绍了正则表达式,下面我们来介绍bs4 Beautiful Soup是py

    2024年02月09日
    浏览(30)
  • 解析库bs4的使用

    安装: pip3 install Beautifulsoup4 1.bs4遍历文档树 bs4:解析xml格式的模块,从xml中找想要的数据。 html是xml的一种,解析html,使用requests返回的数据,可能是json、html、文件,再使用bs4解析html格式。 用法: 注:lxml比html.parser速度块,但是需要安装lxml模块( pip3 install lxml ) 2.bs4搜

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包