Нужно получить ссылки со страницы видео на YouTube, ссылки загружаются через javascript. Использование модуля запроса python - PullRequest
1 голос
/ 20 июня 2020

Мне нужно прочитать ссылки на видео из ссылок ниже.

https://www.youtube.com/channel/UCoq5eKuZhG7Dm-63YFUYQog/videos

Ссылки, которые загружаются в начале, легко получить, но те, которые загружаются после javascript, трудны. Может ли кто-нибудь помочь мне определить, как получить тех, кто использует модуль запроса Python. Я не понимаю, каков будет почтовый запрос.

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

Вы можете использовать официальный API, с помощью которого легко искать видео по указанному c каналу:

enable API screen

  • Go для учетных данных / создания учетных данных / ключа API

API key screen

  • установить клиент API Google для python:

    pip3 install --upgrade google-api-python-client
    

Используйте ключ API в приведенном ниже скрипте. Этот скрипт извлекает элементы видео из канала с идентификатором UCoq5eKuZhG7Dm-63YFUYQog, использует разбиение на страницы , чтобы получить их все, и повторно создает ссылку из videoId:

import googleapiclient.discovery
from urllib.parse import parse_qs, urlparse
import re

#extract channel id from url
url = 'https://www.youtube.com/channel/UCoq5eKuZhG7Dm-63YFUYQog/videos'
channel_id = re.search('channel\/(.*)\/videos', url).group(1)

print(f'get all videos links from {channel_id}')
youtube = googleapiclient.discovery.build("youtube", "v3", developerKey = "YOUR_KEY")

request = youtube.search().list(
    channelId = channel_id,
    part = "id",
    maxResults = 50,
    type = "video"
)
response = request.execute()

videos_items = []
while request is not None:
    response = request.execute()
    videos_items += response["items"]
    request = youtube.search().list_next(request, response)

print(f"total: {len(videos_items)}")
print([ 
    f'https://www.youtube.com/watch?v={t["id"]["videoId"]}'
    for t in videos_items
])

Вывод:

get all videos links from UCoq5eKuZhG7Dm-63YFUYQog
total: 80
[
    'https://www.youtube.com/watch?v=uORsR14S7gw', 
    'https://www.youtube.com/watch?v=cARHPeZIUs4', 
    ............
    'https://www.youtube.com/watch?v=CF2JO5a2EHE', 
    'https://www.youtube.com/watch?v=1yLesOxlHs0'
]

Если вам нужна дополнительная информация о видео, используйте part = "snippet", см. это

0 голосов
/ 20 июня 2020

Вы не можете использовать только Smodule запроса. Вам нужно будет очистить сайт от этих ссылок с помощью Selenium и / или BeautifulSoup. В этом есть много полезной информации.

Вот ссылка на один из моих ответов, который даст вам фору.

{ ссылка }

Вам придется искать разные div и, возможно, теги.

...