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

如何用Scrapy.FormRequest实现无name属性输入框的产品搜索爬取?

解决Scrapy爬取MoparPartsGiant产品编号搜索问题

核心思路:抓包分析实际请求参数

前端输入框没有name属性没关系,直接通过浏览器抓包获取搜索时实际发送给服务器的请求细节(请求方法、URL、参数名),再构造对应的Scrapy请求即可,这种方式比依赖FormRequest.from_response更稳定可靠。

步骤1:抓包获取请求信息

  1. 打开浏览器开发者工具(按F12),切换到「网络」面板
  2. 在网站搜索框输入任意产品编号(比如5175788AA)并提交搜索
  3. 在网络请求列表中找到搜索对应的请求(通常是POST或GET方法,URL包含search关键字)
  4. 查看该请求的「参数」或「表单数据」,记录下服务器接收的参数名(比如可能是query、term或search_text),以及请求的URL和方法

步骤2:构造Scrapy请求(无需依赖FormRequest.from_response)

根据抓包到的信息,直接构造scrapy.Request或scrapy.FormRequest:

示例1:如果是POST请求

def parse(self, response):
    product_numbers = ['5175788AA', '82214506AB', 'UN051D1AA']
    # 替换为抓包到的实际搜索接口URL和参数名
    search_url = 'https://www.moparpartsgiant.com/search-handler'
    param_key = 'search_term'
    
    for number in product_numbers:
        yield scrapy.FormRequest(
            url=search_url,
            formdata={param_key: number},
            callback=self.parse_product
        )

示例2:如果是GET请求

def parse(self, response):
    product_numbers = ['5175788AA', '82214506AB', 'UN051D1AA']
    # 替换为抓包到的实际搜索URL格式
    search_url_template = 'https://www.moparpartsgiant.com/search?q={}'
    
    for number in product_numbers:
        yield scrapy.Request(
            url=search_url_template.format(number),
            callback=self.parse_product
        )

备选方案:用FormRequest.from_response定位无name的输入框

如果一定要用FormRequest.from_response,可以通过XPath/CSS选择器指定表单和输入框,手动填充值:

def parse(self, response):
    product_number = '5175788AA'
    # 替换为实际搜索表单的XPath(比如通过action属性或ID定位)
    form_xpath = '//form[@action="/search"]'
    # 替换为实际输入框的XPath(比如通过placeholder或类型定位)
    input_element = response.xpath(f'{form_xpath}//input[@type="text"]').get()
    
    yield scrapy.FormRequest.from_response(
        response,
        formxpath=form_xpath,
        # 手动构造表单数据,通过XPath匹配输入框
        formdata={input_element.attrib.get('id') or '': product_number},
        callback=self.parse_product
    )

注意事项

  • 抓包时要注意是否有隐藏参数(比如csrf token),如果有需要从页面中提取并加入请求参数
  • 避免请求频率过高,可设置DOWNLOAD_DELAY防止被网站封禁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:55:21