如何用Scrapy Selector提取无class/ID的Genre对应li文本?
解决方法:通过标签定位后提取父li的后续文本
完全可以通过选中<s>标签后获取父li的后续文本,这种方法不受li在页面中的位置影响,核心思路是先定位到文本为Genre:的<s>标签,再从它的父节点或兄弟节点中提取目标文本。以下是几种常用工具的实现方式:
Python(BeautifulSoup)
方法1:提取父li的全部文本并过滤
from bs4 import BeautifulSoup # 替换为你的HTML内容 html = """ <li><s>Genre:</s> Modern</li> """ soup = BeautifulSoup(html, 'html.parser') genre_s = soup.find('s', string='Genre:') if genre_s: # 去掉<s>标签的文本,再清理空格 genre_text = genre_s.parent.get_text(strip=True).replace('Genre:', '').strip() print(genre_text) # 输出: Modern
方法2:直接取<s>的下一个兄弟节点
如果<s>标签后直接跟目标文本,用next_sibling更精准:
genre_text = genre_s.next_sibling.strip()
JavaScript(浏览器/Cheerio)
// 浏览器环境下的实现 const genreSTag = Array.from(document.querySelectorAll('s')).find(el => el.textContent.trim() === 'Genre:'); if (genreSTag) { // 提取<s>之后的文本 const genreText = genreSTag.nextSibling.textContent.trim(); console.log(genreText); // 输出: Modern }
XPath(Scrapy/Lxml)
用XPath直接定位目标文本,无需先处理<s>标签的父节点:
//s[text()='Genre:']/following-sibling::text()
或者提取父li下的所有文本节点:
//s[text()='Genre:']/parent::li/text()
内容的提问来源于stack exchange,提问作者Nimo Db
相关产品推荐
相关产品推荐

