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

如何用Scrapy爬取Aparat站热门板块超1000条视频链接?

如何获取Aparat网站“داغ ترین ها”板块1000+视频链接

你的问题很典型——静态爬取首页只能拿到初始加载的内容,而这个板块的更多视频是通过**滚动加载(AJAX异步请求)**来补充的,所以只爬首页只能拿到约60条。下面是具体的解决思路和代码修改方案:

1. 先分析网站的加载机制

打开浏览器开发者工具(F12),切换到「Network」→「XHR」标签,然后滚动“داغ ترین ها”板块的页面,你会发现每次滚动到底部,网站会发送一个AJAX请求到类似这样的接口:

https://www.aparat.com/etc/api/videoByCat/cat/mostviewed?page=2&perpage=30

这个接口返回的是JSON格式的数据,里面包含了该分页的所有视频信息,包括链接、标题等。参数说明:

  • page:当前分页页码(从1开始)
  • perpage:每页返回的视频数量(默认30,你可以尝试调整,但不要太大避免触发反爬)

2. 修改Scrapy代码,批量请求分页接口

我们可以直接请求这个API接口,循环生成不同页码的请求,直到拿到超过1000条链接。这样比解析HTML更高效,也更容易控制数量。

修改后的代码示例:

import scrapy
import json

class AparatSpider(scrapy.Spider):
    name = 'aparatspider'
    # 初始请求第1页,perpage设为30
    start_urls = ['https://www.aparat.com/etc/api/videoByCat/cat/mostviewed?page=1&perpage=30']
    # 目标数量,这里设为1000
    target_count = 1000
    current_count = 0
    current_page = 1

    def parse(self, response):
        # 解析JSON响应
        data = json.loads(response.text)
        videos = data.get('video', [])
        
        for video in videos:
            # 提取视频链接(用uid拼接直接链接,比解析onmousedown更可靠)
            video_url = f"https://www.aparat.com/v/{video['uid']}"
            self.current_count += 1
            yield {'video_url': video_url}
            
            # 达到目标数量就停止爬取
            if self.current_count >= self.target_count:
                return

        # 如果还没达到目标,继续请求下一页
        self.current_page += 1
        next_url = f"https://www.aparat.com/etc/api/videoByCat/cat/mostviewed?page={self.current_page}&perpage=30"
        yield scrapy.Request(next_url, callback=self.parse)

3. 注意事项

  • 反爬应对:不要请求太频繁,Scrapy默认的并发设置已经比较合理,若遇到403/503错误,可以在settings.py中添加请求头(比如自定义User-Agent),或者设置下载延迟:DOWNLOAD_DELAY = 2。
  • 参数调整:部分网站会限制perpage的最大值,你可以测试调整这个参数(比如设为50)来减少请求次数,但不要超过网站允许的范围。
  • 链接可靠性:API返回的uid是视频的唯一标识,拼接成的链接比从onmousedown属性中提取的更稳定,不容易因为前端代码变动失效。

这样修改后,你的爬虫会自动请求分页接口,直到获取到1000条以上的视频链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:16:07