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

如何在Scrapy爬虫中提取HTML结构里href属性内的链接值

解决方法

问题原因

  • 要提取HTML标签的属性值,需要在XPath表达式末尾追加/@属性名语法,你当前的写法直接匹配到a标签节点,get()就会返回完整的标签字符串
  • 循环内的XPath用//开头会全局匹配整个页面的元素,不会限定在当前遍历的article节点内,会导致所有循环返回的都是页面第一个匹配的结果,需要改成.//开头限定查询范围为当前节点内部

修正后代码

import scrapy

class scraping(scrapy.Spider):
    name = 'NewsSpider'
    start_urls = ['https://www.uol.com.br/']

    def parse(self, response):
        news = response.xpath('//article')
        for n in news:
            # 提取到的href如果是相对路径,可以用response.urljoin()转为绝对路径
            link = n.xpath(".//a[@class='hyperlink headlineSub__link']/@href").get()
            print({
                'Link': link,
                'Title': n.xpath('.//a/div/h3/text()').get(),
            })

补充说明

如果提取到的链接是相对路径(没有域名前缀),可以把link替换为response.urljoin(link)即可得到可直接访问的完整链接。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:15:03