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

无法从网页表格导入数据:Scrapy爬取FundsExplorer表格求助

解决FundsExplorer FII排名数据爬取问题

你的问题核心在于目标网站的表格是JavaScript动态加载的,直接请求静态页面无法获取到表格内容,而且原代码的CSS选择器也没有定位到正确的元素(静态响应里根本不存在这个表格)。下面是两种可行的解决方法:

方法一:直接调用后台API(推荐)

这类网站通常会通过AJAX请求后台API获取数据,比爬取渲染后的HTML更高效稳定。通过浏览器开发者工具的「网络」面板可以找到数据接口,该网站的FII排名数据接口返回JSON格式,直接解析即可:

import scrapy

class FiispiderSpider(scrapy.Spider):
    name = "fiispider"
    allowed_domains = ["fundsexplorer.com.br"]
    # 直接请求API接口而非页面URL
    start_urls = ["https://www.fundsexplorer.com.br/wp-json/funds/v1/ranking"]

    def parse(self, response):
        # 解析JSON响应
        data_list = response.json()
        for item in data_list:
            # 提取你需要的字段,示例提取名称、代码、最近12个月收益率
            yield {
                '名称': item.get('simple_name'),
                '代码': item.get('symbol'),
                '12个月收益率(%)': item.get('twelve_months')
                # 其他字段可根据API返回的JSON结构自行添加,比如'price'、'dy'等
            }

方法二:使用Scrapy渲染JavaScript

如果必须爬取渲染后的页面,可以使用scrapy-splash工具模拟浏览器渲染JS。步骤如下:

  1. 安装依赖:pip install scrapy-splash,并启动Splash服务(需Docker环境)
  2. 修改爬虫代码,配置Splash请求:
import scrapy
from scrapy_splash import SplashRequest

class FiispiderSpider(scrapy.Spider):
    name = "fiispider"
    allowed_domains = ["fundsexplorer.com.br"]
    start_urls = ["https://www.fundsexplorer.com.br/ranking"]

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(
                url=url,
                callback=self.parse,
                args={'wait': 2}  # 等待2秒让JS加载完成
            )

    def parse(self, response):
        # 现在可以定位到渲染后的表格行
        rows = response.css('tr.default-fiis-table__row')
        for row in rows:
            yield {
                '名称': row.css('td:nth-child(2) a::text').get(),
                '代码': row.css('td:nth-child(1) span::text').get(),
                '当前价格': row.css('td:nth-child(3) span::text').get()
                # 根据表格列的位置调整选择器
            }

注意事项

  • 方法一的API接口可能会有更新,若失效可重新通过浏览器开发者工具抓包获取最新接口
  • 爬取时请遵守网站的robots.txt规则,避免请求过于频繁导致被封禁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:27:24