Python使用BeautifulSoup批量提取li标签中optionid属性的方法
解决方案
BeautifulSoup 实现
调用find_all('li')返回的ResultSet属于类列表的可迭代对象,仅单个Tag元素支持find()方法或属性读取,直接对集合调用方法会触发属性不存在报错。
要批量提取索引1~14范围的optionid,直接对ResultSet做切片遍历即可:
from bs4 import BeautifulSoup # 假设已完成页面请求解析拿到soup对象 li_list = soup.find_all('li') option_ids = [] # Python切片为左闭右开规则,取索引1到14对应切片范围为[1:15] for li in li_list[1:15]: # 先判断标签是否存在optionid属性,避免抛出KeyError if 'optionid' in li.attrs: raw_id = li['optionid'] # 去除option_前缀,也可使用raw_id.split('_')[-1]适配前缀波动场景 pure_id = raw_id.replace('option_', '') option_ids.append(pure_id) # 后续f-string拼接示例 for id in option_ids: target_url = f"你的目标请求规则前缀{id}" # 后续数据请求逻辑
Selenium 实现
如果使用Selenium做页面爬取,逻辑和BeautifulSoup一致,仅元素属性读取API有差异:
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 假设已完成目标页面加载 li_elements = driver.find_elements(By.TAG_NAME, 'li') option_ids = [] for li in li_elements[1:15]: raw_id = li.get_attribute('optionid') if raw_id: # 过滤不存在该属性的元素 pure_id = raw_id.replace('option_', '') option_ids.append(pure_id) driver.quit()
内容的提问来源于stack exchange,提问作者Bhavya Lodaya
相关产品推荐
相关产品推荐

