我有一个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'])
答案 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>