用Python抓取Youtube搜索结果



def url_search(self, search_string, max_search):
textToSearch = search_string
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, 'lxml')
i = 1
for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'}):
if len(self.dict) < max_search:
self.dict[i] = 'https://www.youtube.com' + vid['href']
i += 1
else:
break

我正在尝试使用BS4从youtube搜索结果页面获取视频href我认为这个问题是soup.findAll(attrs={'class':'yt-uix-tile-link'}):被返回为None。我不太确定。他希望能在这个问题上提供帮助,或者其他方法和想法。

Youtube在其页面上使用javascript生成了大量内容——你不太可能从漂亮的汤中得到你想要的东西。您将需要使用selenium或其他启用javascript的解析器。

请注意,这并不意味着bs4不好——它对javascript不那么重的网站非常好,而且在这些情况下比selenium更快。

有关更多信息,请参阅:从网页中删除YouTube链接

因此,YouTube使用JavaScript生成搜索结果页面。我没有使用bs4,而是使用官方的YouTube API找到了一种替代方法。在我的情况下,使用YouTube API要简单得多。

有关YouTube API的更多信息,请参阅:https://developers.google.com/youtube/v3

最新更新