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

Scrapy爬取返回空数组:无需Selenium获取动态渲染数据方案

解决办法:直接抓取数据API(无需Selenium)

因为页面表格内容是JavaScript动态渲染的,Scrapy默认获取的是初始HTML,所以定位不到表格行。最直接高效的方案是绕过前端渲染,直接请求后端提供数据的API接口:

  1. 定位数据API
    打开浏览器访问目标网站,按F12打开开发者工具,切换到「Network」面板,刷新页面后筛选「XHR」或「Fetch」类型的请求。查找返回JSON格式数据、包含股票板块信息的请求(通常这类接口的URL会包含api、data等关键词)。

  2. 在Scrapy中请求API
    找到目标API后,直接在Scrapy中请求该接口,解析返回的JSON数据即可,无需处理前端渲染的页面。示例代码如下:

    import scrapy
    import json
    
    class NepseAlphaSpider(scrapy.Spider):
        name = "nepsealpha_sector"
        # 替换成你找到的实际API URL
        start_urls = ["https://nepsealpha.com/api/your-target-endpoint"]
    
        def parse(self, response):
            # 解析JSON响应
            data = json.loads(response.text)
            # 根据API返回的结构提取板块信息,以下为示例(需根据实际数据调整)
            for entry in data.get("data", []):
                yield {
                    "股票代码": entry.get("symbol"),
                    "所属板块": entry.get("sector"),
                    "价格": entry.get("price"),
                    # 按需添加其他字段
                }
    
  3. 处理请求头(可选)
    如果API需要验证请求头(比如User-Agent、Referer或Cookie),可以从浏览器的请求头中复制对应字段,添加到Scrapy的请求中:

    def start_requests(self):
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
            "Referer": "https://nepsealpha.com/"
        }
        yield scrapy.Request(url=self.start_urls[0], headers=headers, callback=self.parse)
    

这种方法比使用渲染工具更高效,且稳定性更强,避免了前端页面结构变化带来的维护问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:37:16