У меня есть плейлист песен на YouTube, и я хочу скачать их все с помощью Scrapy, но я могу видеть названия только первых 30 - PullRequest
0 голосов
/ 08 октября 2019

У меня есть список воспроизведения песен на 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 голосов
/ 08 октября 2019

Содержимое 'https://www.youtube.com/watch?v=_tNU6dpjIyM&list=RD_tNU6dpjIyM'

начинается с некоторых метаданных json, и если вы, например, ищите «где-то», вы заметите, что данные для ссылки «Linking park - Somewhere принадлежат мне»есть. Вам просто нужно извлечь точную строку.

это тег сценария со следующей структурой:

<script >
window["ytInitialData"] = {"responseContext": "<data containing all the songs"....}
window["ytInitialPlayerResponse"] = {<more meta data not sure what is is for"}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...