我在youtube中有一个歌曲的播放列表,我想使用Scrapy下载所有歌曲,但只能看到前30首歌曲的标题

时间:2019-10-08 06:10:04

标签: python python-3.x web-scraping scrapy

我有一个YouTube中的歌曲播放列表,其中包含100多首歌曲,我想使用Scrapy下载所有歌曲,但只能从列表中查看前30首歌曲的标题。请向我建议一种从播放列表中提取所有歌曲的方法。

到目前为止的代码:

import scrapy
from bs4 import BeautifulSoup

class Playlist_Scraper(scrapy.Spider):
    name = 'find_playlist'

    def start_requests(self):
        urls =[
            'https://www.youtube.com/watch?v=_tNU6dpjIyM&list=RD_tNU6dpjIyM',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        print(response.css('ahref').attrib['href'])

1 个答案:

答案 0 :(得分:0)

https://www.youtube.com/watch?v=_tNU6dpjIyM&list=RD_tNU6dpjIyM”的内容

从一些json元数据开始,例如,如果搜索“ somewhere”,您将注意到“ Linking park-Somewhere I归属”链接的数据在那里。 您只需要提取确切的行即可。

它是具有以下结构的脚本标记:

<script >
window["ytInitialData"] = {"responseContext": "<data containing all the songs"....}
window["ytInitialPlayerResponse"] = {<more meta data not sure what is is for"}
</script>