Python新手求助:如何用BeautifulSoup提取HTML中input的value值?
别客气呀!刚接触Python的时候,对BeautifulSoup的选择器不太熟太正常了,我来帮你捋清楚怎么提取这些数字~
解决思路
你已经成功定位到了目标<div>元素,接下来只需要在这个div范围内,找到所有的<input>标签,然后提取它们的value属性值即可。
完整代码示例
import requests from bs4 import BeautifulSoup as bs session = requests.session() url = "url here" a = session.get(url) soup = bs(a.text,'html.parser') # 定位目标div容器 sizes_container = soup.find('div', {'class':'option-radios'}) # 提取所有input标签的value数字 if sizes_container: # 遍历div内的所有input标签,提取value并转成整数 value_numbers = [int(input_tag['value']) for input_tag in sizes_container.find_all('input')] print("提取到的数字列表:", value_numbers) else: print("未找到目标div元素,请检查页面结构或class名称是否正确")
代码细节解释
sizes_container.find_all('input'):在已经定位的div容器里,筛选出所有的<input>标签,返回一个可遍历的标签列表。input_tag['value']:获取单个input标签的value属性值(默认是字符串类型)。int(...):如果需要把结果转成整数类型,就加上这个转换;如果只需要字符串形式,直接去掉int()即可。
更简洁的写法(CSS选择器)
你也可以直接用CSS选择器一步到位定位目标input标签,省去先找div的步骤:
import requests from bs4 import BeautifulSoup as bs session = requests.session() url = "url here" a = session.get(url) soup = bs(a.text,'html.parser') # 直接通过CSS选择器定位所有目标input value_numbers = [int(tag['value']) for tag in soup.select('div.option-radios input.property-uid1')] print("提取到的数字列表:", value_numbers)
这里的div.option-radios input.property-uid1表示:找到class为option-radios的div下,所有class为property-uid1的input标签,定位更精准。
内容的提问来源于stack exchange,提问作者metro_
相关产品推荐
相关产品推荐

