将 youtube 频道名称添加到评论中

Getting youtube channel name into comment

我想要获取 selenium 脚本来评论具有特定关键字的视频。 但是我也想让它说出频道名称,如果可能的话,有人可以帮我吗谢谢。

(我知道 {} 不应该在那里,但它会让您知道在哪里放置频道名称)

(顺便说一句,频道名称将介于 {} 之间)

这是代码。

import time
import os
from bs4 import BeautifulSoup
from selenium import webdriver

def youtube_login(email,password):

    op = webdriver.ChromeOptions()
    op.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
    #op.add_argument('--headless')
    op.add_argument('--disable-dev-shm-usage')
    op.add_argument('--no-sandbox')
    driver = webdriver.Chrome()
    driver.get('https://accounts.google.com/ServiceLogin?hl=en&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Fhl%3Den%26feature%3Dsign_in_button%26app%3Ddesktop%26action_handle_signin%3Dtrue%26next%3D%252F&uilel=3&passive=true&service=youtube#identifier')

    driver.find_element_by_id('identifierId').send_keys(email)
    driver.find_element_by_id('identifierNext').click()
    time.sleep(3)
    #WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div#password input[name="password"]')))
    driver.find_element_by_css_selector('div#password input[name="password"]').send_keys(password)
    time.sleep(4)
    driver.find_element_by_id('passwordNext').click()

    return driver

def comment_page(driver,urls,comment):

    if len( urls ) == 0:
        print ('Youtube Comment Bot: Finished!')
        return []
    
    url = urls.pop()
    
    driver.get(url)
    print(url)
    driver.implicitly_wait(1)

    if not check_exists_by_xpath(driver,'//*[@id="movie_player"]'):
        return comment_page(driver, urls, random_comment())
    time.sleep(4)
    driver.execute_script("window.scrollTo(0, 600);")
    
    if not check_exists_by_xpath(driver,'//*[@id="simple-box"]/ytd-comment-simplebox-renderer'):
        return comment_page(driver, urls, random_comment())

    if check_exists_by_xpath(driver,'//*[@id="contents"]/ytd-message-renderer'):
        return comment_page(driver, urls, random_comment())

    WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "ytd-comments ytd-comment-simplebox-renderer")))

    driver.find_element_by_css_selector("ytd-comments ytd-comment-simplebox-renderer div#placeholder-area").click()
    driver.implicitly_wait(5)
    driver.find_element_by_xpath('//*[@id="contenteditable-root"]').send_keys(comment)
    driver.find_element_by_xpath('//*[@id="contenteditable-root"]').send_keys(Keys.CONTROL, Keys.ENTER)

    post = WebDriverWait(driver, 15).until(
        EC.element_to_be_clickable((By.CSS_SELECTOR,'ytd-comments ytd-comment-simplebox-renderer'))
    )
    post.click()

    r = np.random.randint(2,5)
    time.sleep(r)

    return comment_page(driver, urls, random_comment())


def random_comment():
# You can edit these lines=======
    messages = [
        'sup {channel name here}, I loved this video lol cant wait to see more :D'
    ]
# ===============================
    r = np.random.randint(0, len(messages))

    return messages[r]
 
def check_exists_by_xpath(driver,xpath):
    
    try:
        driver.find_element_by_xpath(xpath)
    except NoSuchElementException:
        return False

    return True

if __name__ == '__main__':
# You should edit these lines=======
    email = 'Youremail@gmail.com'
    password = 'Yourpassword'
# ==================================

    urls = [
      'https://www.youtube.com/watch?v=Szww2_VqEKs&t',
    ]
    
    inp = open("url.txt","r")
    for line in inp.readlines():
            urls.append(line)
    

    driver = youtube_login(email, password)

    comment_page(driver,urls,random_comment())

这里是获取频道名称的定位器:

//div[contains(@class, 'channel-name')]//a

您现在要做的就是获取文本并将其替换为您的字符串。