使用Selenium从youtube搜索中创建一个包含N个元素的Python字典



所以,我试图使用Selenium创建一个youtube视频的N个元素的字典,以及它们在youtube搜索中的视图。例如:{视频网址01':521,视频网址02':782}是的,关键将是视频的url,索引将是观看次数,总共将有N个视频。

登陆搜索页面并进行搜索后,接下来应该采取哪些步骤来实现这一点。

我们非常感谢您的任何帮助:>

到目前为止,设法获得了所有的视频标签:

def GetTopVideosfromSearch(self,query,N):
query = query.replace(' ', '+')
self.browser.get('https://www.youtube.com/results?search_query='+query)
vids=self.browser.find_elements_by_id('video-title')
for vid in vids[0:N]:
print((vid.get_attribute("aria-label")))

我过去使用过Selenium,但用于解析其他网站。

首先,您需要生成内容,因为YouTube很可能正在使用ajax。

这可以通过以下方式实现:

Keys.PAGE_DOWN

生成内容后,必须在生成的html中进行搜索,即您要查找的元素。

在我的情况下,我在寻找价格:

browser.find_elements_by_class_name("product-info-price")

一旦你有了它,你就可以像循环一样迭代,并将结果添加到字典中:

以下是一个完整的片段:

# imports
import pandas as pd
import requests
import time
import selenium
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
link = "https://es.wallapop.com/search?catIds=12461&dist=400&publishDate=any"
browser = webdriver.Chrome()
browser.get(link)
time.sleep(1)
body = browser.find_element_by_tag_name("body")
element = browser.find_element_by_class_name('Button')
browser.execute_script("arguments[0].click();", element)
# generate content, scrolling down the webpage
for _ in range(10):
body.send_keys(Keys.PAGE_DOWN)
time.sleep(0.1)
# iterate over the elements and append to the list
list_of_prices = []
for price in browser.find_elements_by_class_name("product-info-price"):
list_of_prices.append(price.text)

找到了一个适用于我的的解决方案

def GetTopVideosfromSearch(self,query,N):
query = query.replace(' ', '+')
self.browser.get('https://www.youtube.com/results?search_query='+query)
for _ in range(N-4):
self.browser.find_element_by_tag_name("body").send_keys(Keys.PAGE_DOWN)
time.sleep(0.1)
vids=self.browser.find_elements_by_id('video-title')
vidsDict={}
for vid in vids[0:N]:
tmp = vid.get_attribute("aria-label")
tmp=tmp[::-1]
s=0
views=''
for t in tmp:
if t==' ':
s+=1
if s==1 and t!=' ' and t!=',':
views+=t
views=int(views[::-1])   
vidsDict[vid.get_attribute("href")] = views
return vidsDict

相关内容

最新更新