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

如何抓取HTML标签属性中的值?Scrapy Shell下提取object标签labels数据的咨询

提取SVG标签数据的两种方法(Scrapy Shell)

嘿,作为Scrapy新手,你找对方向啦!因为这个<object>元素是引用了外部的SVG文件,页面本身并没有渲染SVG里的内容,所以直接从response里找labels区域是行不通的——我们得从它的data属性里的URL参数中提取labels数据。下面给你两种靠谱的方法:

方法一:用正则表达式提取(你提到没试过的.re()方法)

首先在Scrapy Shell里定位到这个元素,拿到完整的data URL:

# 用CSS选择器获取data属性值
data_url = response.css('#svg_chart::attr(data)').get()

然后用正则匹配labels=后面的内容,直到遇到&结束:

import re
labels_match = re.search(r'labels=([^&]+)', data_url)
if labels_match:
    labels_str = labels_match.group(1)
    labels_list = labels_str.split(',')
    print(labels_list)
# 输出结果就是:['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

方法二:用URL解析库(更规范,不易出错)

正则虽然快捷,但如果URL参数格式有变化可能会失效,用Python自带的urllib.parse解析查询参数更稳妥:

from urllib.parse import urlparse, parse_qs

# 先拿到data URL
data_url = response.css('#svg_chart::attr(data)').get()
# 解析URL的查询参数部分
parsed_url = urlparse(data_url)
query_params = parse_qs(parsed_url.query)
# 提取labels参数,parse_qs返回的是列表,取第一个值再拆分
labels_str = query_params['labels'][0]
labels_list = labels_str.split(',')
print(labels_list)

两种方法都能帮你拿到想要的月份标签列表,第二种方法更适合处理复杂的URL参数场景,推荐你优先试试~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:27:36