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

Scrapy Shell运行正常但scrapy crawl无数据爬取问题求助

问题分析与解决方法

核心错误:起始URL属性名拼写错误

Scrapy爬虫类中定义起始URL列表的正确属性名是start_urls(复数形式,末尾带s),你代码里误写为starts_url,导致Scrapy无法识别需要爬取的起始页面,因此爬虫启动后直接结束,没有发起任何请求。

修正后的代码

import scrapy
from scrapy_splash import SplashRequest

class AtmSpider(scrapy.Spider):
    name = 'scrapebca'
    allowed_domains = ['www.bca.co.id']
    # 修正属性名为 start_urls
    start_urls = ['https://www.bca.co.id/id/lokasi-bca']

    def parse(self, response):
        data = response.xpath('//div[@class="a-card shadow0 m-maps-location-container-wrapper"]')
        for item in data:
            terminal_id = item.xpath('.//p[@class="a-text a-text-small m-maps-location-container-wrapper-code"]/text()').getall()
            yield {
                'terminal_id': terminal_id
            }

额外注意事项

  1. 若目标页面依赖JavaScript渲染数据(虽然你在Scrapy Shell中能正常获取,但实际爬虫可能遇到渲染问题),需要使用SplashRequest发起请求,可重写start_requests方法:
def start_requests(self):
    for url in self.start_urls:
        yield SplashRequest(url, self.parse, args={'wait': 0.5})

确保你已经正确配置了Splash服务的相关设置(如SPLASH_URL等)。

  1. 检查ROBOTSTXT_OBEY设置:日志中显示该值为True,需确认目标网站的robots.txt是否允许爬取/id/lokasi-bca路径,若被禁止,需将该设置改为False。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:05:08