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

如何使用Scrapy抓取带特定属性的script标签内文本?

Scrapy抓取特定属性script标签文本的正确写法

你之前写的response.css('script').attrib['type']存在两个问题:一是只会获取页面中第一个<script>标签的type属性值,没有筛选出type="application/ld+json"的目标标签;二是仅获取了属性值,而非标签内部的文本内容,所以无法满足需求。

以下是两种正确的实现方式:

方法一:CSS选择器实现

通过CSS选择器精准匹配目标标签,再提取其内部文本:

# 获取第一个符合条件的script标签文本
js_content = response.css('script[type="application/ld+json"]::text').get()

# 若页面存在多个符合条件的标签,获取所有文本组成的列表
js_contents = response.css('script[type="application/ld+json"]::text').getall()
  • script[type="application/ld+json"]:筛选出type属性为application/ld+json的<script>标签
  • ::text:提取标签包裹的内部文本内容
  • get():返回第一个匹配到的结果;getall():返回所有匹配结果的列表

方法二:XPath选择器实现

用XPath同样可以完成需求,代码如下:

# 获取第一个符合条件的script标签文本
js_content = response.xpath('//script[@type="application/ld+json"]/text()').get()

# 获取所有符合条件的文本组成的列表
js_contents = response.xpath('//script[@type="application/ld+json"]/text()').getall()
  • //script[@type="application/ld+json"]:匹配所有type属性为指定值的<script>标签
  • /text():提取标签内部的文本内容
  • get()和getall()的作用与CSS选择器中的对应方法一致

内容的提问来源于stack exchange,提问作者dedepene

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:20:45