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

Scrapy爬取全站链接并获取HTTP状态码技术求助

解决Scrapy爬虫获取HTTP状态码的问题

嘿,你的思路方向是对的,只是没用到Scrapy Response对象里自带的状态码属性!我来帮你调整代码,让它同时输出链接和对应的HTTP状态码:

关键修改点

  • Scrapy的response对象自带status属性,直接调用就能拿到当前请求的HTTP状态码(比如200、404)
  • 你的start_urls里的URL格式不对,需要补全http://或https://前缀,否则爬虫无法正常发起请求

修改后的完整代码

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor

class someSpider(CrawlSpider):
    name = 'linkscrawl'
    allowed_domains = ['mysite.com']
    # 修正start_urls的URL格式,添加http/https前缀
    start_urls = ['https://mysite.com/']
    rules = (Rule(LinkExtractor(), callback="parse_obj", follow=True), )

    def parse_obj(self, response):
        # 从response中提取URL和状态码
        current_url = response.url
        status_code = response.status
        # 格式化输出
        print(f"URL: {current_url} | HTTP Status Code: {status_code}")

额外优化建议

如果你想把这些数据持久化保存(比如存成CSV或JSON文件),可以定义一个Scrapy Item类:

from scrapy.item import Item, Field

class LinkStatusItem(Item):
    url = Field()
    status_code = Field()

然后在parse_obj里实例化Item并返回:

def parse_obj(self, response):
    item = LinkStatusItem()
    item['url'] = response.url
    item['status_code'] = response.status
    # 打印输出
    print(f"URL: {item['url']} | HTTP Status Code: {item['status_code']}")
    return item

之后运行爬虫时用scrapy crawl linkscrawl -o link_statuses.csv就能把结果保存成CSV文件啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:36:43