Python Noob在这里,
此代码的作用是打印并在youtube中打开所有网址。
我只希望它打开找到的第一个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
我不知道该怎么做,这一定是简单的事情,而且我也不了解,所以如果您能帮助我,我将不胜感激
答案 0 :(得分:0)
基于BeautifulSoup的文档
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
只需添加
for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'}
,限制= 1):
所以您将返回第一个。 我认为find不起作用,因为使用这些参数,vid变成了字符串,而在python中,您无法执行
vid='whatever'
print vid['href']