Текст на Python для поиска исходного кода видеороликов Youtube

#python-3.x #url #youtube

#python-3.x #url #YouTube

Вопрос:

Новичок в Python здесь,

Что делает этот код, так это печатает и открывает в YouTube все URL-адреса.

Я просто хочу, чтобы он открывал самый первый URL, который он находит, вместо всех из них.

 import urllib.request

from bs4 import BeautifulSoup

import webbrowser

textToSearch = 'Hello World'
query = urllib.parse.quote(textToSearch)
url = "https://www.youtube.com/results?search_query="   query
response = urllib.request.urlopen(url)
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'}):
    print('https://www.youtube.com'   vid['href'])
    url = ('https://www.youtube.com/'   vid['href'])
    webbrowser.open(url)
    print('Done!')
  

Я подумал о том, чтобы изменить строку

 soup.findAll
  

Для

 soup.find
  

но это не работает:

 TypeError: string indices must be integers
  

И я понятия не имею, что делать, это должно быть что-то простое, и у меня не так много знаний, поэтому, если вы можете мне помочь, я был бы очень признателен

Ответ №1:

На основе документов BeautifulSoup

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

просто добавьте

for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'} , limit=1):

таким образом, вы вернете первый. find не работает, я думаю, потому что с этими параметрами vid становится строкой, а в python вы не можете сделать

 vid='whatever'
print vid['href']