parse 的代码
def parse_video_page(self, response: HtmlResponse):
self.log('开始分析视频真实地址', level=logging.WARNING)
title = response.css('#viewvideo-title::text').extract_first().strip()
video_link = response.css('source::attr(src)').extract_first()
if video_link:
# 处理一下链接中 http://185.38.13.130//mp43/2998... 这种的 url
video_link_list = video_link.split('//')
real_video_link = video_link_list[0] + '//' + video_link_list[1] + '/' + video_link_list[2]
self.log('获取到下载链接,丢入下载 pipelines', level=logging.WARNING)
yield New91CrawlerItem(file_urls=real_video_link, file_name=title)
else:
self.log('获取视频下载地址失败,地址:{0}'.format(response.url), level=logging.WARNING)
这是 pipelines 的代码
class New91CrawlerPipeline(FilesPipeline):
def get_media_requests(self, item, info):
return scrapy.Request(url=item['file_urls'], meta=item)
def file_path(self, request, response=None, info=None):
name = request.meta['file_name']
return name + '.mp4'
1
wind3110991 2019-01-24 01:42:13 +08:00 via iPhone
贴代码,还有两个环境部署的文件配置,阿里云什么系统什么配置
|
2
warcraft1236 OP @wind3110991 配置用的默认的,阿里云就是最低配的那个 1 核 1G 内存 Ubuntu 18 的系统
|
3
warcraft1236 OP @wind3110991 我自己分析发现,减少并发数量可以降低内存,推测是由于服务器网速快,所以默认的 16 个线程都能满速下载,然后下载的时候,scrapy 用的 requests 应该设置的 chunked 比较大
|
4
warcraft1236 OP |