Python中bs4的soup.find()和soup.find_all()用法

这篇具有很好参考价值的文章主要介绍了Python中bs4的soup.find()和soup.find_all()用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

我们在使用python对网页爬虫的时候,经常会得到一些html数据,因此我们就会利用soup.find()和soup.find_all()方法来筛选出想要的数据。

二、用法

1.soup.find()

 1.1利用name来查找

代码如下:

from bs4 import BeautifulSoup

html_string = """<div>
    <h1 class="item" id="x1">蔡x坤</h1>
    <ul class="item" id="x2">
        <li>唱</li>
        <li>跳</li>
        <li>rap</li>
        <li>篮球</li>
    </ul>
    <div class="item "id='x3'>
        <span>你干嘛</span>
        <a href="www.xxx.com" class='info'>ikun.com</a>
    </div>
</div>"""

soup = BeautifulSoup(html_string, features="html.parser")

#利用name来查找
tag_list=soup.find(name="h1")
print(tag_list)

 结果如下:

<h1 class="item" id="x1">蔡x坤</h1>

1.2利用属性attrs来寻找

代码如下:

html_string = """<div>
    <h1 class="item" id="x1">蔡x坤</h1>
    <ul class="item" id="x2">
        <li>唱</li>
        <li>跳</li>
        <li>rap</li>
        <li>篮球</li>
    </ul>
    <div class="item "id='x3'>
        <span>你干嘛</span>
        <a href="www.xxx.com" class='info'>ikun.com</a>
    </div>
</div>"""

soup = BeautifulSoup(html_string, features="html.parser")
#利用属性attrs查找
tag_list=soup.find(attrs={"id":"x3"})
print(tag_list)

结果如下:

 <div class="item" id="x3">
<span>你干嘛</span>
<a class="info" href="www.xxx.com">ikun.com</a>
</div>

1.3利用name和attrs寻找 

代码如下:

html_string = """<div>
    <h1 class="item" id="x1">蔡x坤</h1>
    <ul class="item" id="x1">我是一名练习生</ul>
    <ul class="item" id="x2">
        <li>唱</li>
        <li>跳</li>
        <li>rap</li>
        <li>篮球</li>
    </ul>
    <div class="item "id='x3'>
        <span>你干嘛</span>
        <a href="www.xxx.com" class='info'>ikun.com</a>
    </div>
</div>"""

soup = BeautifulSoup(html_string, features="html.parser")
#利用name和attrs寻找
tag_list=soup.find(name="ul",attrs={"id":"x2"})
print(tag_list)

结果如下:

 <ul class="item" id="x2">
<li>唱</li>
<li>跳</li>
<li>rap</li>
<li>篮球</li>
</ul>

2.soup.find_all()

2.1利用name找多个

代码如下:

html_string = """<div>
    <h1 class="item" id="x1">蔡x坤</h1>
    <ul class="item" id="x1">我是一名练习生</ul>
    <ul class="item" id="x2">
        <li>唱</li>
        <li>跳</li>
        <li>rap</li>
        <li>篮球</li>
    </ul>
    <div class="item "id='x3'>
        <span>你干嘛</span>
        <a href="www.xxx.com" class='info'>ikun.com</a>
    </div>
</div>"""

soup = BeautifulSoup(html_string, features="html.parser")
#利用name找多个
tag_list=soup.find_all(name="li")
for tag in tag_list:
    print(tag.name,tag.text)

结果如下:(输出name和text)

li 唱
li 跳
li rap
li 篮球

2.2利用attrs找多个

代码如下:

from bs4 import BeautifulSoup

html_string = """<div>
    <h1 class="item" id="x1">蔡x坤</h1>
    <ul class="item" id="x1">我是一名练习生</ul>
    <ul class="item" id="x2">
        <li>唱</li>
        <li>跳</li>
        <li>rap</li>
        <li>篮球</li>
    </ul>
</div>"""

soup = BeautifulSoup(html_string, features="html.parser")

#用attrs找多个
tag_list=soup.find_all(attrs={"class":"item"})
for tag in tag_list:
    print(tag.name,tag.text)

结果如下:(输出name和text) 

h1 蔡x坤
ul 我是一名练习生
ul 


rap
篮球

2.3利用recursive判断是否递归寻找,默认为True

代码如下:(recursive=False    只找儿子)

from bs4 import BeautifulSoup

html_string = """<div>
    <div id='x1'>
        <span>你干嘛</span>
        <a href="www.xxx.com" class='info'>ikun.com</a>
        <div>
            <span>这是一句话</span>
                <span>这是一句话的一句话</span>
            <span>这也是一句话</span>
        </div>
    </div>
</div>"""

soup = BeautifulSoup(html_string, features="html.parser")

#找儿子
tag_list1=soup.find(attrs={"id":"x1"})
for tag in tag_list1.find_all(recursive=False):
    print(tag)

结果如下(recursive=False    只找儿子):

<span>你干嘛</span>
<a class="info" href="www.xxx.com">ikun.com</a>
<div>
<span>这是一句话</span>
<span>这是一句话的一句话</span>
<span>这也是一句话</span>
</div>

代码如下:(recursive=True    找子子孙孙) 

from bs4 import BeautifulSoup

html_string = """<div>
    <div id='x1'>
        <span>你干嘛</span>
        <a href="www.xxx.com" class='info'>ikun.com</a>
        <div>
            <span>这是一句话</span>
                <span>这是一句话的一句话</span>
            <span>这也是一句话</span>
        </div>
    </div>
</div>"""

soup = BeautifulSoup(html_string, features="html.parser")

#找子子孙孙
tag_list1=soup.find(attrs={"id":"x1"})
for tag in tag_list1.find_all(recursive=True):
    print(tag)

结果如下(recursive=True    找子子孙孙):

<span>你干嘛</span>
<a class="info" href="www.xxx.com">ikun.com</a>
<div>
<span>这是一句话</span>
<span>这是一句话的一句话</span>
<span>这也是一句话</span>
</div>
<span>这是一句话</span>
<span>这是一句话的一句话</span>
<span>这也是一句话</span>

三、案例 

爬取易车网的车品牌为例子(本例子参考python讲师武沛齐老师)

1.分析网页

用chrome的无痕网页打开https://car.yiche.com/并分析网页

soup.find,python,开发语言,爬虫

分析发现车牌的名字在 name="div", attrs={"class": "item-brand"}里面

2.模拟请求,获取HTML文本

import requests
from bs4 import BeautifulSoup

# 获取HTML文本
res = requests.get(
    url="https://car.yiche.com/"
)

3.筛选数据

import requests
from bs4 import BeautifulSoup

# 获取HTML文本
res = requests.get(
    url="https://car.yiche.com/"
)

soup = BeautifulSoup(res.text, features="html.parser")

#创一个列表存
result_list=[]

#筛选数据
tag_list = soup.find_all(name="div", attrs={"class": "item-brand"})
for tag in tag_list:
    result_list.append(tag.attrs["data-name"])
print(result_list)

4.结果

 

['奥迪', '埃安', 'AITO', '阿斯顿·马丁', '阿维塔', '阿尔法·罗密欧', '爱驰', 'AUXUN傲旋', 'ALPINA', 'Apollo', '阿尔卑斯', 'Abarth', 'ABT', '安凯客车', '安徽猎豹', 'Arash', 'Aurus', '艾康尼克', 'Agile Automotive', 'APEX', 'ATS', 'Ariel', 'Aspark', 'ARMADILLO', 'Alpine', 'AURA', 'Aviar', 'AC Schnitzer', 'Atlis', 'AEHRA', 'Aria', 'Alpha Motor', 'AZNOM', 'AEV ROBOTICS', '阿尔特', 'AFEELA', 'ASKA', 'AKXY2', 'Alef', 'AIM', 'ATOM', '安培', '本田', '奔驰', '比亚迪', '宝马', '别克', '保时捷', '北京', '奔腾', '宝骏', '标致', '宾利', 'BAW北汽制造', '北京汽车', '布加迪', '博速', '北汽昌河', '奔驰卡车', '巴菲特', '霸王龙', '宝沃', '北汽瑞翔', '北汽新能源', '北汽幻速', '北奔重卡', '百智新能源', '北汽威旺', '北汽雷驰', '宾尼法利纳', '比速汽车', '百度Apollo', '比德文汽车', '铂驰', '宝骐汽车', '博世', '拜腾', '北汽泰普', '宝腾', 'BAO', '保斐利', '北汽道达', '北汽黑豹', '北京清行', '博郡汽车', 'Bowler', 'BAC', 'Bertone', 'Bollinger Motors', 'BeyonCa', 'Brabham', '比克汽车', 'Bremach', 'Bizzarrini', '宝雅', '长安', '长安启源', '长安欧尚', '长城', '长安凯程', '长安跨越', '创维汽车', '曹操', '橙仕', '乘龙汽车', '成功汽车', '车驰汽车', '超境汽车', 'Charge Cars', '采埃孚', 'CANDELA', '车和家', 'Cupra', '长江EV', 'Conquest', 'Corbellati', '昶洧', 'Czinger', 'Caterham', 'Canoo', 'Continental', '大众', '东风风神', '东风风行', '东风风光', '东风奕派', '东风', '东风纳米', '道奇', '东风小康', 'DS', '东南', '东风轻型车', '东风风度', '大运', '大力牛魔王', '东风御风', '东风商用车', '电动屋', '东风富康', '滴滴', '东风·瑞泰特', '大乘汽车', '东风氢舟', 'Dianchè', 'De Tomaso', 'Drako', '电咖', '大迪', 'Delage', 'DEUS Automobiles', '大发', 'DAVID BROWN', '达契亚', 'Donkervoort', 'Datsun', 'dÄHLer', 'DeLorean', 'Electra Meccanica', 'Elektron', 'EdisonFuture', 'Elemental', 'E.Go', 'E-Legend', '丰田', '福特', '福田', '法拉利', '飞凡汽车', '方程豹', '飞碟汽车', '菲亚特', '福迪', 'Faraday Future', '丰田纺织', '法诺新能源', 'FOXTRON', 'Fox e-mobility', '弗那萨利', 'Frangivento', 'Fresco', 'Fisker', '辅恒汽车', '广汽传祺', '高合汽车', '广汽集团', '观致', 'GMC', '国机智骏', '光冈', '谷歌', '国金汽车', 'GTA', '广汽吉奥', '国吉商用车', 'G&B Design', '广通客车', '广汽日野', 'Gumpert', '格罗夫', 'GAZ', 'NEVS国能汽车', 'GFG Style', 'GLM', 'G-Power', 'Gemballa', 'Ginetta', 'GMA', 'GYON', 'GUNTHER WERKS', '国新新能源', '高通', '红旗', '哈弗', '昊铂', '海马', '合创汽车', '悍马', '恒驰', '黄海', '汉腾汽车', '华晨新日', '活越', '华梓汽车', '恒润汽车', '华泰', '汉龙汽车', '恒天', '华夏领舰', '哈飞', '华菱汽车', '华颂', 'Hyperion', 'Hennessey', '红星汽车', '华凯', '宏远汽车', '华普', '海格', 'HOFELE', '汇众', '毫末智行', '华骐', 'HOPIUM', 'Hispano Suiza', '华利', '霍顿', 'Hudson', 'HURTAN', 'Holon', 'iCAR汽车', 'Inferno', 'Italdesign', 'INEOS', 'Icona', 'INKAS', 'IZERA', 'IED', 'INDI', 'Indigo', '吉利汽车', '捷途', '捷达', '吉利银河', '捷豹', '极氪', 'Jeep', 'ARCFOX极狐', '吉利几何', '江铃', '捷尼赛思', '金杯', '江汽集团', '江淮瑞风', '极石汽车', '江淮汽车', '江铃集团新能源', '江淮钇为', 'Polestar极星', '极越', '钧天', '金龙', '江南汽车', '金旅', '江铃旅居车', '九龙', '嘉远汽车', '江铃重汽', '君马汽车', '金冠汽车', '江铃晶马汽车', '金琥汽车', '吉威新能源', 'Jannarelly', '奇点汽车', '佳跃', '吉祥汽车', '凯迪拉克', '凯翼', '开瑞', '科尼赛克', '克蒂汽车', '开云汽车', '克莱斯勒', '科瑞斯的', '克慕勒', '凯马汽车', 'Karlmann', '焜驰', '开沃汽车', '卡尔森', 'KTM', '凯佰赫', 'Kimera', '开利', 'Karma', '卡威', 'KHANN', '卡升', '克罗斯哈特', '路虎', '领克', '雷克萨斯', '理想汽车', '林肯', '零跑汽车', '劳斯莱斯', '兰博基尼', '岚图汽车', '铃木', '路特斯', '凌宝汽车', '雷诺', '猎豹汽车', '雷丁', '蓝电', '拉帝', 'LUMMA', '陆风', 'Lorinser', '菱势汽车', '力帆汽车', '理念', '雷达汽车', 'LEVC', '莲花汽车', '领途汽车', '联合卡车', 'LG', '龙程汽车', 'LIMGENE凌际', '拉达', '莱茵汽车', '陆地方舟', '罗夫哈特', '拉共达', 'Lucid', '灵悉', '蓝旗亚', '绿驰', 'LITE', '雷诺三星', '罗孚', '朗世', 'Lightyear', 'LOCAL MOTORS', '领志', 'LeSEE', 'Lordstown Motors', 'LUNAZ', ' LIUX ', '洛轲智能', '蓝擎汽车', '马自达', '名爵', '玛莎拉蒂', 'MINI', '迈凯伦', '迈巴赫', '猛士', '迈莎锐', '摩登汽车', '迈越', '摩根', '敏安汽车', 'Michelin米其林', '曼', 'Mole', '迈迈', 'Manhart', 'Meyers Manx', 'MILITEM', 'MAGNA', 'Micro', 'Munro', 'Mazzanti', '美亚', 'Mahindra', 'MELKUS', 'Mobilize', 'Moke ', 'Mopar', '魅族', 'Mullen', '哪吒汽车', '纳智捷', '南骏汽车', 'NamX', '诺博汽车', 'Naran', 'nanoFLOWCELL', 'Neuron EV', 'NEXT LEVEL', 'Nikola', 'Noble', 'Novitec', '欧拉', '讴歌', 'OBBIN', '欧宝', '欧铃汽车', '欧朗', '欧联', '帕加尼', '朋克汽车', 'Posaidon', 'Puritalia', 'Praga', 'Piëch Automotive', '佩奇奥', 'Pogea Racing', 'Project Arrow', '奇瑞', '起亚', '启辰', '奇瑞新能源', '乔治·巴顿', '庆铃五十铃', '青岛解放', '前途', '前晨汽车', '全球鹰', '骐铃汽车', '奇鲁汽车', '清源汽车', '轻橙时代', '日产', '荣威', '睿蓝汽车', 'RAM', '瑞弗', '瑞驰新能源', '容大智造', 'Rezvani', '如虎', '瑞麒', '瑞腾汽车', '锐马克', 'RIVIAN', 'Ringbrothers', 'RENOVO', 'Rinspeed', 'Radical', 'Radford', 'REVO ZERO', '深蓝汽车', '上汽大通MAXUS', '三菱', '斯柯达', '斯巴鲁', '思皓', 'smart', 'SWM斯威汽车', '思铭', 'SERES赛力斯', 'SONGSAN MOTORS', '陕汽重卡', '上汽轻卡', '时风', '三一集团', '沙龙汽车', '上汽红岩', '斯堪尼亚', '山姆', '盛唐', 'SHELBY', '陕汽轻卡', '双龙', '萨博', '世爵', '陕汽商用车', '上汽集团', '上海', '赛麟', '斯太尔', '神州', '斯达泰克', '双环', '陕汽通家', '申龙客车', '上喆', 'SSC', 'SONY', '首望', 'SVE', 'STI', 'SPIRRA', 'SCOUT', 'Spyros Panopoulos', '速达', 'Spofec', 'Sono Motors', 'Scion', 'Share2Drive', 'SIN CARS', 'Singer', '深向', 'Silence', '世极', '特斯拉', '坦克', '腾势', '天际汽车', '泰卡特', '塔塔', '泰克鲁斯·腾风', 'Triton', 'TopCar', 'Touring Superleggera', 'Troller', 'Togg', 'Theon Design', 'Tramontana', 'TOROIDION', 'TVR', 'TECHART', '途柚汽车 ', 'THOR', '拓锐斯特 ', 'Telo', 'THK', 'TWR', '天地良心汽车', 'Ugur Sahin Design', 'Ultima', 'Uniti', 'Vinfast', 'Vega Innovations', 'VLF Automotive', 'Vanda Electric', 'VANTAS', 'VIRITECH', 'Venturi', 'Vanwall', '五菱汽车', '沃尔沃', '蔚来', '魏牌', '五十铃', '未奥汽车', '沃尔沃卡车', '威马汽车', '维努斯', '瓦滋', 'WALD', '威兹曼', '伟昊汽车', '潍柴欧睿', '潍柴英致', '万象汽车', '威麟', 'W Motors', '沃克斯豪尔', 'WayRay', '现代', '雪佛兰', '星途', '小鹏', '雪铁龙', '小米汽车', '小鹏汇天', '小跑车', '小虎', 'SRM鑫源', '新龙马汽车', '徐工汽车', '新吉奥', 'AM晓奥汽车', '西雅特', '现代摩比斯', '小猬汽车', '新特汽车', '星客特', '英菲尼迪', '仰望', '依维柯', '一汽解放', '云度', '一汽', '远程', '野马汽车', '一汽解放轻卡', '驭胜', '远航汽车', '宇通客车', '野马新能源', '运良', '一汽凌河', '雅升汽车', 'YAMAHA', '游侠', '云雀汽车', '悠遥科技', '永源', 'IMSA英飒', '悠跑科技', '悠宝利', '银隆新能源', '御捷', '翼刻', '裕路', '易电易行', '一汽富维', '怡亚通', '越界', '智己汽车', '智界', '众泰', '中国重汽VGV', '中国重汽', '中兴', '中华', '重汽王牌', '重汽豪曼', '知豆', '智行盒子', '自游家', '中欧房车', '智点汽车', '正道汽车', '中通客车', '之诺', 'Zenvo', '中植汽车', '777']文章来源地址https://www.toymoban.com/news/detail-841862.html

到了这里,关于Python中bs4的soup.find()和soup.find_all()用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【问题解决】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日
    浏览(42)
  • Python爬虫学习笔记(六)————BeautifulSoup(bs4)解析

    目录 1.bs4基本简介 (1)BeautifulSoup简称 (2)什么是BeatifulSoup? (3)优缺点 2.bs4安装以及创建 (1)安装          (2)导入          (3)创建对象 3.节点定位 (1)根据标签名查找节点 (2)函数         ①find(返回一个对象)         ②find_all(返回一个列表

    2024年02月17日
    浏览(57)
  • python爬虫数据解析xpath、jsonpath,bs4

    解析数据的方式大概有三种 xpath JsonPath BeautifulSoup 打开谷歌浏览器扩展程序,打开开发者模式,拖入插件,重启浏览器,ctrl+shift+x,打开插件页面 安装在python环境中的Scripts下边,这里就是python库的位置,例如我的地址为:E:pythonpython3.10.11Scripts 解析本地文件etree.parse( \\\'xx.

    2024年02月13日
    浏览(46)
  • Python爬虫技术系列-02HTML解析-BS4

    参考连接: https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/# http://c.biancheng.net/python_spider/bs4.html 2.1.1 Beautiful Soup安装 Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 第三方库,它可以从 HTML 或 XML 文档中快速地提取指定的数据。Beautiful Soup 语法简单,使用方便,并且容易理解,

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

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

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

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

    2024年02月09日
    浏览(46)
  • Python爬虫之Requests库、BS4解析库的下载和安装

    一、Requests库下载地址 requests · PyPI 将下载的.whl文件放在Script目录下  win+r 输入cmd 进入windows控制台 进入到Scripts目录 输入pip3.10 install requests-2.28.1-py3-none-any.whl(文件的名称) 出现Successful install即安装成功  二、BS4解析库的下载和安装 进入到scripts目录 pip install bs4 由于 BS4

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

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

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

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

    2023年04月08日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包