如何提取input标签中的数值?请求协助完善Python爬虫代码
修复提交按钮文本中的数字提取问题
我来帮你一步步修正代码,当前代码无法获取目标数值主要有两个问题:
<input>是自闭合标签,它的显示文本其实存在于value属性中,而非标签的内部文本,所以用.text()(而且BeautifulSoup里获取文本的方法是.get_text()或.string,不是.text())根本拿不到内容- 就算拿到了字符串,还需要处理其中的空格和非数字部分,才能得到纯数字
6355
下面是修正后的完整代码:
from fake_useragent import UserAgent from bs4 import BeautifulSoup import requests import re # 引入正则模块处理数字提取 URL_accueil = "https://www.lacentrale.fr/listing?mileageMax=150000&priceMax=17000&priceMin=5000&yearMin=2012&age=1" page_accueil = requests.get(URL_accueil, headers={'User-Agent': str(UserAgent().chrome)}) soup = BeautifulSoup(page_accueil.text, "lxml").find('div', {"class": "submitContainer txtC"}) print(soup) print("\n\n") try: # 首先获取input标签的value属性值 submit_value = soup.find('input', {"type": "submit"}).get('value') # 用正则提取所有数字字符,去除空格和其他非数字内容 pagination = re.sub(r'\D', '', submit_value) # 可选:转成整数类型 pagination = int(pagination) if pagination else "missing" except Exception as e: print(f"Error occurred: {e}") pagination = "missing" print(pagination)
代码说明:
- 获取value属性:用
.get('value')从input标签中拿到完整的按钮文本Rechercher (6 355 annonces) - 提取纯数字:使用正则表达式
re.sub(r'\D', '', submit_value),把所有非数字的字符(包括空格、括号、字母等)替换为空,得到6355 - 类型转换与异常处理:把提取到的字符串转成整数(如果有值的话),同时保留异常捕获,避免页面结构变化导致程序崩溃
这样就能正确提取到你想要的数字6355啦!
内容的提问来源于stack exchange,提问作者Houssem
相关产品推荐
相关产品推荐

