scrapy 使用 CSS 或者 xpath 提取没有 HTML 标签包括的文本

如何使用 css 或者 xpath 选择器提取到 1-1 Java简介 (05:49) 的内容?

<a href="/video/1430" class="J-media-item">
     <i class="imv2-play_circle type"></i>
    1-1 Java简介 (05:49)
     <button class="r moco-btn moco-btn-red preview-btn">开始学习</button>
</a>

目前的解决方法是使用 beautifulsoup4, 除了这里的数据其他数据都提取到了, 不想为了这个问题再引入 bs4, 请教下 css 或者 xpath 如何实现?

Demodeom
最佳答案
from lxml import etree
wb_data = '''
<a href="/video/1430" class="J-media-item">
     <i class="imv2-play_circle type"></i>
    1-1 Java简介 (05:49)
     <button class="r moco-btn moco-btn-red preview-btn">开始学习</button>
</a>
'''
html = etree.HTML(wb_data)
a_text = html.xpath('//a/text()')
print(a_text)
4年前 评论
讨论数量: 3

css: i::text()
xpath: a//i//text()

4年前 评论
Demodeom (楼主) 4年前
pardon110

取a标签的内的文本节点集合,取第1个索引就是了

4年前 评论
from lxml import etree
wb_data = '''
<a href="/video/1430" class="J-media-item">
     <i class="imv2-play_circle type"></i>
    1-1 Java简介 (05:49)
     <button class="r moco-btn moco-btn-red preview-btn">开始学习</button>
</a>
'''
html = etree.HTML(wb_data)
a_text = html.xpath('//a/text()')
print(a_text)
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!