首页 > 编程问答 >如何使用 BeautifulSoup python 查找选择标签的选定选项值

如何使用 BeautifulSoup python 查找选择标签的选定选项值

时间:2024-08-03 15:38:51浏览次数:12  
标签:python html web-scraping beautifulsoup

我正在尝试从 python 中的 html select 标签获取选定的值。好吧,当选项属性设置为 selected="selected" 时,它是成功的,但我试图废弃的网站具有不同的选项属性,例如:-

html = """
        <select>
        <option value="">Please select a vlalue</option>
        <option selected value = "1">Male</option>
        <option value = "2">Female</option>
        </select>
    """
soup = BeautifulSoup(html, "html.parser")

dropdown =  soup.find('select')
for options in dropdown.find_all('option', {'selected':"selected"}):
    if options is not null:
        print(options['value'])

所以我上面的代码无法获取所选值:任何一个数字都可以吗出来?


的代码之所以无法正常工作,是因为正在明确寻找属性 selected="selected" ,而的 HTML 并没有使用该属性来指示选定的选项。幸运的是,Beautiful Soup 有一个更强大的方法来找到所选的选项。

无需搜索特定的属性,而是可以使用 select('option:checked') 。这将返回所有被选中的 <option> 标签,而无论它们如何指示其选择状态。

以下是使用的 HTML 代码示例的更正代码:

from bs4 import BeautifulSoup

html = """
    <select>
        <option value="">Please select a vlalue</option>
        <option selected value = "1">Male</option>
        <option value = "2">Female</option>
    </select>
"""
soup = BeautifulSoup(html, "html.parser")

dropdown = soup.find('select')
selected_option = dropdown.find('option', {'selected': True}) 

if selected_option:
    print(selected_option['value']) 
else:
    print("No option selected")

在这段代码中:

  1. 我们使用 soup.find('select') 找到 <select> 标签。
  2. 我们使用 dropdown.find('option', {'selected': True}) 找到被选中的 <option> 标签。
  3. 我们检查找到的标签是否为空。如果不是,则打印其 value 属性。

这种方法应该可以适用于任何指示选项已选中的方法,而不仅仅是 selected="selected" 属性。

标签:python,html,web-scraping,beautifulsoup
From: 78827953

相关文章

  • 12:Python元组属性
    #元组tuple,元素不可被修改,不能被增加或则删除tu=(111,'alex',(11,22),[(33,44)],True,33,44,)#一般写元组的时候,最后可以加个逗号不报错print(tu)tu=(111,'alex',(11,22),[(33,44)],True,33,44,)v=tu[0]#元组索引print(v)tu=(111,'alex',(11,2......
  • 如何在venv python中安装requirements.txt
    我是Python虚拟环境的初学者,在安装requirements.txt文件时遇到问题。问题是,当我运行命令来安装requirements.txt文件时,没有安装任何内容。平台:WindowsVS代码镜像如何解决这个问题?没有正确激活虚拟环境。请按照以下步骤操作:1.激活虚拟环境:在VSC......
  • 【代码随想录】图论复习(Python版)
    深度优先搜索1.搜索过程一个方向搜,不到黄河不回头,直到遇到绝境了,搜不下去了,再换方向(换方向的过程就涉及到了回溯)2.代码框架回溯法的代码框架:defbacktracking(参数):if终止条件:存放结果returnfor选择本层集合中的元素(树中节点孩子的数量......
  • 【Dash】使用 HTML 和 CSS 创建图表
    一、StylingYourAppTheexamplesintheprevioussectionusedDashHTMLComponentstobuildasimpleapplayout,butyoucanstyleyourapptolookmoreprofessional.Thissectionwillgiveabriefoverviewofthemultipletoolsthatyoucanusetoenhanc......
  • 【Python】数据类型之字符串
    本篇文章将继续讲解字符串其他功能:1、求字符串长度功能:len(str)  ,该功能是求字符串str的长度。代码演示:2、通过索引获取字符串的字符。功能:str[a]  str为字符串,a为整型。该功能是获取字符串str索引为a处的字符。注意:字符串的索引是从0开始的。代码演示:注意......
  • 【Python】python基础
    本篇文章将讲解以下知识点:(1)循环语句(2)字符串格式化(3)运算符一:循环语句循环语句有两种:while   for本篇文章只讲解while循环格式:while 条件:  代码(只有条件为真的时候,此代码才会被执行,此处的代码可以是多行代码)(1)循环语句基本使用示例1:此处代码执行过程:1<3......
  • python 爬虫入门实战——爬取维基百科“百科全书”词条页面内链
    1.简述本次爬取维基百科“百科全书”词条页面内链,仅发送一次请求,获取一个html页面,同时不包含应对反爬虫的知识,仅包含最基础的网页爬取、数据清洗、存储为csv文件。爬取网址url为“https://zh.wikipedia.org/wiki/百科全书”,爬取内容为该页面所有内链及内链标识(下图蓝......
  • Python:match()和search()的区别
    在Python中,match()和search()函数通常与正则表达式(regularexpressions)一起使用,特别是在re模块中。尽管它们都用于搜索字符串中的模式,但它们在搜索行为上有关键的区别。re.match()re.match()函数尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()......
  • Python:range()函数的用法
    range()函数是Python中一个内置函数,用于生成一个数字序列。这个函数通常用于在for循环中迭代一个指定的次数。range()函数可以接收一到三个参数,分别是起始值(start)、结束值(stop)和步长(step),但步长是可选的,默认值为1。基本用法两个参数:range(start,stop)生成一个从star......
  • 计算机毕业设计-基于python高校大学生评奖评优系统【源码+文档+PPT】
    精彩专栏推荐订阅:在下方主页......