введите пользовательский текст в текстовое поле YouTube, используя селен Python - PullRequest
1 голос
/ 15 июня 2019

Я делаю текстовый скребок для YouTube, в котором я хочу вводить данные, искать видео и собирать данные о нем.У меня проблемы с вводом данных в текстовое поле.Может кто-нибудь предложить мне способ сделать это?

from bs4 import BeautifulSoup 

driver = webdriver.Chrome()
soup = BeautifulSoup(driver.page_source, 'lxml') #Use the page as source

page = driver.get('https://freight.rivigo.com/dashboard/home')

import sys

from importlib import reload
reload


elem = driver.find_element_by_tag_name("body")

no_of_pagedowns = 120

while no_of_pagedowns:
    elem.send_keys(Keys.PAGE_DOWN)
    time.sleep(0.5)
    no_of_pagedowns-=1

soup = BeautifulSoup(driver.page_source, 'lxml')

Между этим кодом я хочу добавить пользовательский текст в поле ввода, скажем, «комедия» и хочу получить данные об этом.Я застрял на том, как вводить данные, и я совершенно новичок в этом, поэтому любая помощь будет полезна.

1 Ответ

0 голосов
/ 18 июня 2019

Эта страница НЕ указывает на YouTube.Посмотрите пример рабочего кода ниже, чтобы узнать, что вы можете сделать с помощью API YouTube.

# https://medium.com/greyatom/youtube-data-in-python-6147160c5833
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#from youtube_data import youtube_search


test = youtube_search("Nine Inch Nails")
test.keys()

test['commentCount'][:5]

df = pd.DataFrame(data=test)
df.head()

df1 = df[['title','viewCount','channelTitle','commentCount','likeCount','dislikeCount','tags','favoriteCount','videoId','channelId','categoryId']]
df1.columns = ['Title','viewCount','channelTitle','commentCount','likeCount','dislikeCount','tags','favoriteCount','videoId','channelId','categoryId']
df1.head()


#import numpy as np
#numeric_dtype = ['viewCount','commentCount','likeCount','dislikeCount','favoriteCount']
#for i in numeric_dtype:
#    df1[i] = df[i].astype(int)

NIN = df1[df1['channelTitle']=='Nine Inch Nails']
NIN.head()


NIN = NIN.sort_values(ascending=False,by='viewCount')
plt.bar(range(NIN.shape[0]),NIN['viewCount'])
plt.xticks(range(NIN.shape[0]),NIN['Title'],rotation=90)
plt.ylabel('viewCount in 100 millions')

plt.show()
...