使用 Python 进行网页抓取 Youtube 搜索结果

时间:2021-04-19 22:30:57

标签: python web web-scraping beautifulsoup 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。我不太确定。帮助解决这个问题,或者其他方法和想法,他将不胜感激。

2 个答案:

答案 0 :(得分:0)

Youtube 在其页面上使用 javascript 生成大量内容,您不太可能从美丽的汤中获得您想要的内容。您将需要使用 selenium 或其他启用 javascript 的解析器。

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

有关详细信息,请参阅:Scraping YouTube links from a webpage

答案 1 :(得分:0)

事实证明,YouTube 使用 JavaScript 生成搜索结果页面。我找到了一种使用官方 YouTube API 的替代方法,而不是使用 bs4。就我而言,使用 YouTube API 要简单得多。

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