[开源]Python爬虫框架scrapy如何爬取国内各大视频网站视频信息 [欢迎新手一起交流]
因为想做一个 VIP 视频网站 /APP 然后不太想用第三方的资源站或者是程序。
想做一个能够爬取国内各大视频网站的视频信息的爬虫程序。
爬的信息主要是: 标题,导演,主演,简介,类型,年份,VIP/用卷 /收费 /免费,片头时间,片尾时间,图片(横 /竖),地区,评分,集数,是否完结等....
目前我已经做好了一丢丢了。。。腾讯视频可以算是好了(还有一丢丢问题,极少部分视频不能爬取)
如果觉得这个东西可能有用的话 可以点个 star 可能很久以后,会完善
如果你需要一个项目练练手。。。那么,欢迎你来和我一起完善这个项目。。。
项目地址:https://github.com/perfect-network/scrapy_for_video.git
[开源]Python爬虫框架scrapy如何爬取国内各大视频网站视频信息 [欢迎新手一起交流]
8 回复
有点意思,star 一个。
用Scrapy爬视频网站信息,核心是处理动态加载和反爬。直接上干货,一个能跑的例子:
import scrapy
import json
from urllib.parse import urlencode
class VideoSpider(scrapy.Spider):
name = 'video_spider'
def start_requests(self):
# 以B站为例,先获取分类列表
base_url = 'https://api.bilibili.com/x/web-interface/ranking/v2'
params = {
'rid': 1, # 动画区
'type': 'all',
'ps': 50 # 每页数量
}
yield scrapy.Request(
f'{base_url}?{urlencode(params)}',
callback=self.parse_video_list
)
def parse_video_list(self, response):
data = json.loads(response.text)
if data['code'] == 0:
for item in data['data']['list']:
video_info = {
'title': item['title'],
'aid': item['aid'],
'bvid': item['bvid'],
'play': item['stat']['view'],
'danmaku': item['stat']['danmaku'],
'like': item['stat']['like'],
'author': item['owner']['name'],
'duration': self._format_duration(item['duration']),
'pubdate': item['pubdate']
}
# 继续获取详细数据
detail_url = f'https://api.bilibili.com/x/web-interface/view?aid={item["aid"]}'
yield scrapy.Request(
detail_url,
callback=self.parse_video_detail,
meta={'video_info': video_info}
)
def parse_video_detail(self, response):
video_info = response.meta['video_info']
data = json.loads(response.text)
if data['code'] == 0:
detail = data['data']
video_info.update({
'description': detail['desc'][:200], # 截取前200字符
'tags': ','.join([tag['tag_name'] for tag in detail['tags']]),
'coins': detail['stat']['coin'],
'favorites': detail['stat']['favorite'],
'share': detail['stat']['share']
})
yield video_info
def _format_duration(self, seconds):
"""秒数转时分秒格式"""
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
return f'{h:02d}:{m:02d}:{s:02d}' if h else f'{m:02d}:{s:02d}'
关键点:
- 用API接口比解析HTML更稳定,大部分视频站都有公开API
- 请求头要带
User-Agent,settings.py里配置:
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
DOWNLOAD_DELAY = 1 # 礼貌爬取
- 需要登录才能访问的数据,用
scrapy.FormRequest或带上cookies - 异步加载的数据用
scrapy-splash或selenium处理
新手建议从API入手,避开动态渲染的坑。
关注一波不迷路
没有验证码,IP 反爬虫限制的处理吗?
没有,我只是爬信息而已
而且可以直接去他们这个视频 APP/小程序等客户端里抓包,直接去抓接口。。。腾讯视频里就有两个接口是从腾讯视频小程序里抓到的
楼主 ip 用的哪家的代理
目前还没有用到代理。。。。。可能以后会用到吧

