我正在尝试解析某个网站上的歌曲标题,但不知道如何获取包含它们的特定div。我尝试了十几种不同的方法,但总是得到一个空的清单。
如果你打开url并查看其中一个YouTube视频,你会发现一个类为single-post-oembed-youtube-wrapper
的div。该元素还包含歌曲的艺术家和标题。
这是我第一次尝试从网页上抓取数据,有人能帮我吗?
import json
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
import pprint
from webdriver_manager.chrome import ChromeDriverManager
import sys
html = None
url = 'https://ultimateclassicrock.com/best-rock-songs-2018/'
browser = webdriver.Chrome(executable_path="/usr/bin/chromedriver")
browser.get(url)
soup = BeautifulSoup(browser.page_source, 'html.parser')
divs = soup.find_all("div", {"class":"single-post-oembed-youtube-wrapper'"})
# all_songs = browser.find_elements(By.CLASS_NAME, 'single-post-oembed-youtube-wrapper')
# html = all_songs.get_attribute("outerHTML")
pprint.pprint(divs)
browser.close()
3条答案
按热度按时间t2a7ltrp1#
请尝试这个:
这将为您提供那里的所有标题
njthzxwz2#
您还可以尝试直接从HTML源检索数据,从而避免Selify。
产出:
这有点老生常谈,但适用于您的示例。
rdrgkggo3#
您可以从
API
获取所有需要的数据输出: