You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:42:13