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

如何使用Scrapy的CSS选择器提取<a>标签中的Href属性

如何用Scrapy的CSS选择器提取标签的href属性

嘿,我来帮你搞定Scrapy里用CSS选择器提取<a>标签href属性的问题!其实核心语法很简单,我分通用场景和你给出的具体标签两种情况来讲:

一、通用提取方法

不管<a>标签的class是什么,要提取它的href属性,你只需要用Scrapy支持的CSS属性选择语法:::attr(href)。

  • 提取页面所有<a>标签的href:

    # 获取所有结果,返回列表
    all_hrefs = response.css('a::attr(href)').getall()
    # 只获取第一个匹配的结果
    first_href = response.css('a::attr(href)').get()
    
  • 提取带特定class的<a>标签的href:
    如果<a>有单个class(比如<a class="link" href="xxx">),直接用a.link::attr(href);如果是多个class(就像你给出的例子),可以用.把多个class连起来,或者选其中一个最独特的class来缩小范围。

二、针对你给出的具体标签提取

你提供的标签是:

方法1:匹配所有class(最精确)

把所有class用.连接,确保只选中这个特定标签:

specific_href = response.css('a.mod-gallery-article__media.mod-gallery-article__media--img.has-lightbox::attr(href)').get()

方法2:匹配单个独特class(更简洁)

如果页面里只有这个标签带has-lightbox或者mod-gallery-article__media--img这类独特class,直接用单个class选择即可:

# 用has-lightbox class
specific_href = response.css('a.has-lightbox::attr(href)').get()
# 用mod-gallery-article__media--img class
specific_href = response.css('a.mod-gallery-article__media--img::attr(href)').get()

额外小技巧:转成绝对URL

如果提取到的是相对路径(比如你例子里的/content/...),可以用response.urljoin()转成绝对URL:

absolute_url = response.urljoin(specific_href)

内容的提问来源于stack exchange,提问作者Dan George Bostan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:48:15