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

Scrapy爬取戴尔社区网站出现0页面爬取无输出问题

问题根因

爬虫启动后爬取0页面、直接退出,是代码存在4处明显错误,和站点反爬无关:

  • 初始请求方法名拼写错误:Scrapy 约定生成初始爬取请求的方法名是start_requests(结尾带s,复数形式),你写的是单数的start_request,框架无法识别到这个方法,不会生成任何爬取请求,启动后直接走完关闭流程,这是日志显示0页面爬取的核心原因。
  • allowed_domains配置错误:该参数仅接受纯域名值,你填入的www.dell.com/community携带了路径片段,后续就算请求发出,也会被Scrapy自带的域名过滤组件拦截。
  • 请求头格式错误:scrapy.Request的headers参数要求传入字典结构,你直接传入了字符串格式的User-Agent,请求头格式不符合HTTP规范,会被站点直接拦截。
  • XPath逻辑错误:循环解析条目时,你使用//开头的全局XPath,而非以./开头的相对当前节点的路径,就算页面正常返回,也只会重复抓取第一条帖子的内容,无法遍历所有条目;同时原XPath仅选中了外层表格节点,没有定位到每一行帖子的节点。
修正后的完整代码
import scrapy
class DellLatitudeSpider(scrapy.Spider):
    name = 'dell_latitude'
    allowed_domains = ['www.dell.com']
    
    def start_requests(self):
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36'
        }
        yield scrapy.Request(
            url='https://www.dell.com/community/Latitude/bd-p/Latitude?ref=lithium_menu',
            callback=self.parse,
            headers=headers
        )

    def parse(self, response):
        # 定位到每一行帖子条目节点
        for activity in response.xpath("//table[@class='lia-list-wide']//tr[contains(@class, 'lia-list-row')]"):
            yield {
                'board': 'Laptops',
                'sub board': 'Latitude',
                # 用相对路径取当前条目下的内容
                'title': activity.xpath(".//a[@class='page-link lia-link-navigation lia-custom-event']/text()").get().strip(),
                'url': response.urljoin(activity.xpath(".//a[@class='page-link lia-link-navigation lia-custom-event']/@href").get())
            }

修正后重新运行爬虫即可正常发起请求、抓取帖子数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:57:21