【问题标题】:Web Scraping Youtube search results with Python [duplicate]使用 Python 抓取 Youtube 搜索结果 [重复]
【发布时间】:2021-07-14 03:07:41
【问题描述】:

    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'}): 被返回为无。我不太确定。帮助解决这个问题,或者他可能会感谢其他方法和想法。

【问题讨论】:

  • 你能在你的函数中添加一个测试调用,使它成为一个最小的、可重现的例子
  • 如果 findAll 条目返回 none 则表明它没有找到任何东西,也请重命名为 bs4 findAll 返回 none
  • 还将您的代码示例调整为一个独立的函数,以便人们可以将其复制并粘贴到他们的调试环境中,以便更轻松地为您提供帮助
  • 这能回答你的问题吗? Scraping YouTube links from a webpage

标签: python web web-scraping beautifulsoup youtube


【解决方案1】:

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

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

欲了解更多信息,请参阅:Scraping YouTube links from a webpage

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 2011-12-06
      • 2022-10-13
      • 2015-11-23
      • 2016-01-28
      相关资源
      最近更新 更多