#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']