使用Python中的Selenium来查找YouTube视频中的评论数,CSS选择器应该是什么?


在路径上设置chromedriver,然后粘贴搜索的URL。

driver = webdriver.Chrome('**************') 
driver.get("https://www.youtube.com/results?search_query=youtube+keywords&sp=EgIQAQ%253D%253D")

检索视频链接

user_data = driver.find_elements_by_xpath('//*[@id="video-title"]') <br>
links = []<br>
for i in user_data:<br>
            links.append(i.get_attribute('href'))

用新的信息创建一个新的df,我们将收集到的信息。

df = pd.DataFrame(columns = ['v_search', 'v_id','v_comments'])

用Selenium查找剩余数据。

wait = WebDriverWait(driver, 10)
v_search = "Youtube Keyword" 
for x in links[:1]:<br>
        driver.get(x)<br>
        v_id = x.strip('https://www.youtube.com/watch?v=') 

        ### HERE IS MY QUESTION.
        v_comments = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#count > yt-formatted-string"))).text

        # Throw information in the dataframe we defined before (fills row per row).
        df.loc[len(df)] = [v_search,v_id,v_comments]
        sleep(0.5)    #in seconds

Snapshot of the whole code

回溯错误

解决方案:

下面的CSS选择器对我来说是有效的。

#count>.count-text.style-scope.ytd-comments-header-renderer

经测试像。

document.querySelector("#count>.count-text.style-scope.ytd-comments-header-renderer").innerHTML;

结果将是像–x评论。

PS:最好使用 visibility_of_element_located 预期条件。所以,你的情况,会是这样的。

from selenium.webdriver.common.keys import Keys


...
driver.find_element_by_tag_name("body").send_keys(Keys.PAGE_DOWN)
v_comments = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#count>.count-text.style-scope.ytd-comments-header-renderer"))).text

希望能帮到你

给TA打赏
共{{data.count}}人
人已打赏
未分类

JQuery Toggle of divs的可见性[关闭]。

2022-9-9 8:04:18

未分类

核心ML不同尺寸图像的对象检测

2022-9-9 8:04:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索