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

如何使用Scrapy读取JSON文件中的链接批量爬取对应页面数据

Scrapy 批量爬取修改方案

核心修改逻辑

  • 替换原有固定URL列表逻辑,新增本地JSON文件读取逻辑
  • 提取JSON中每个条目的相对路径,拼接完整域名生成目标爬取URL
  • 保留原有页面解析逻辑不变,兼容原有的数据提取规则

修改后完整代码

import scrapy
import json

class RatingSpider(scrapy.Spider):
    name = "rating"
    # 统一配置基础域名,方便后续修改
    base_domain = "https://www.darkpattern.games"

    def start_requests(self):
        # 替换为你本地JSON文件的实际路径
        json_path = "./your_previous_crawl_data.json"
        with open(json_path, "r", encoding="utf-8") as f:
            game_list = json.load(f)
        
        # 遍历所有游戏条目生成爬取请求
        for game in game_list:
            # 提取相对路径,拼接完整URL
            relative_link = game["link"][0].strip()
            full_url = f"{self.base_domain}{relative_link}"
            yield scrapy.Request(url=full_url, callback=self.parse)
            
    def parse(self, response):
        for rating in response.css('div.score_box'):
            yield {
                # 可自行补充游戏名称等关联字段,方便数据匹配
                'reported': rating.css('div.score_heading *::text').extract()
            }

可选优化提示

如果需要关联原JSON中的旧评分、游戏名称等数据,可以通过Scrapy的meta参数传递信息,示例如下:

# 生成请求时添加传参
yield scrapy.Request(
    url=full_url, 
    callback=self.parse,
    meta={
        "old_rating": game["rating"][2].strip(), 
        "game_name": game["title"][1].strip()
    }
)

# 解析阶段读取参数
def parse(self, response):
    old_rating = response.meta["old_rating"]
    game_name = response.meta["game_name"]
    # 可将上述字段加入返回结果,实现新旧数据关联

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:02