【问题标题】:How to work with multiple classes using BeautifulSoup & BS4如何使用 BeautifulSoup 和 BS4 处理多个类
【发布时间】:2022-01-02 18:37:14
【问题描述】:

我正在尝试编写 youtube scraper,作为我任务的一部分,我需要在 bs4 处理多个课程。

HTML 看起来像

<span id="video-title" class="style-scope ytd-playlist-panel-video-renderer">
</span>

我的目标是使用类属性来获取所有 50 种不同的音乐并使用它们。 我试过这样,但它什么也没给我。

soup_obj.find_all("span", {"class":"style-scope ytd-playlist-panel-video-renderer"})

我也尝试了 Selenium 样式(而不是类之间的空格传递点(。)

soup_obj.find_all("span", {"class":"style-scope.ytd-playlist-panel-video-renderer"})

有人知道吗?

【问题讨论】:

    标签: python selenium web-scraping beautifulsoup youtube


    【解决方案1】:

    这应该可行

    soup_obj.find_all("span", {"class":["style-scope", "ytd-playlist-panel-video-renderer"]})
    

    【讨论】:

    • 不幸的是它没有用。
    • 您确定定位器是正确的吗?你能分享那个 youtube 的链接并描述你想在那里做什么吗?
    • 是的,我们可以使用任何 youtube 播放列表进行测试。让我们看看这个。 soup_obj.find_all("a", {"class":["yt-simple-endpoint", "style-scope" , "ytd-playlist-panel-video-renderer"]}) 链接:youtube.com/playlist?list=PL4fGSI1pDJn4fmCoF1vKHLtivI0f9yHiF
    • 好的,但你仍然没有解释你到底想在那里做什么?
    • 是的,我告诉过你它退回了 0 件商品。这意味着代码无法从 html 中获取数据。我已经尝试过使用 Selenium 并且它可以工作,但使用 bs4 它没有成功。
    【解决方案2】:

    使用Selenium,您不能在其中发送多个类名:

    driver.find_elements(By.CLASS_NAME, "classname")
    

    如果您的目标是仅使用 class 属性,那么您只需要传递一个 classname 并且您可以使用其中任何一个以下Locator Strategies

    • 使用类名作为style-scope:

      elements = driver.find_elements(By.CLASS_NAME, "style-scope")
      
    • 使用类名作为style-scope:

      elements = driver.find_elements(By.CLASS_NAME, "ytd-playlist-panel-video-renderer")
      

    要传递两个类名,您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      elements = driver.find_elements(By.CSS_SELECTOR, "span.style-scope.ytd-playlist-panel-video-renderer")
      
    • 使用XPATH

      elements = driver.find_elements(By.XPATH, "//span[@class='style-scope ytd-playlist-panel-video-renderer']")
      

    【讨论】:

    • 您好,感谢您对详细解答的帮助。问题是我试图通过 bs4 而不是硒找到它。因为在 Selenium 中,您可以使用多个空格。没事。在我所有的项目中,只需在空格之间加点,但对于 bs4 不知道该怎么做
    猜你喜欢
    • 2015-10-31
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2015-05-30
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多