使用BeautifulSoup从find_all结果集中提取指定文本的问题求助
解决方法
你当前的代码已经完成了「限定父类筛选目标元素」的逻辑,无法提取到产品名是因为没有调用元素的文本提取方法。
方案1:在原有代码基础上补充文本提取逻辑
如果每个card-headers下可能存在多个card-top-header元素,可直接修改原有循环:
pList = rec_list.find_all(class_="card-headers") resultA = [] for pl in pList: header_items = pl.find_all(class_="card-top-header") for item in header_items: # strip=True会自动去除文本首尾的空白字符 resultA.append(item.get_text(strip=True))
如果每个card-headers下仅存在1个card-top-header元素,可简化为:
pList = rec_list.find_all(class_="card-headers") resultA = [] for pl in pList: header = pl.find(class_="card-top-header") # 增加非空判断避免无对应元素时报错 if header: resultA.append(header.get_text(strip=True))
方案2:用CSS选择器一步完成定位,代码更简洁
直接使用select方法匹配父类为card-headers下的card-top-header元素,无需嵌套循环,同时天然避免匹配到其他父类下的同名class元素:
target_items = rec_list.select(".card-headers .card-top-header") resultA = [item.get_text(strip=True) for item in target_items]
内容的提问来源于stack exchange,提问作者Tony Dunsworth
相关产品推荐
相关产品推荐

