【问题标题】:Scrape all youtube search results抓取所有 youtube 搜索结果
【发布时间】:2019-11-02 22:28:03
【问题描述】:

我正在尝试从 youtube 搜索结果中收集数据。搜索词是“边境牧羊犬”,其中包含对上传的视频的过滤器“今天”

搜索结果中出现了 52 个视频。但是,当我尝试解析页面时,我只有 20 个条目。如何解析所有 52 个视频?任何建议表示赞赏。

附:我为不定式页面尝试了这个post,但它不适用于 youtube。

当前代码:

url = 'https://www.youtube.com/results?search_query=border+collie&sp=EgIIAg%253D%253D'
driver = webdriver.Chrome()
driver.get(url)

#waiting for the page to load
sleep(3) 
#repeat scrolling 10 times
for i in range(10):
    #scroll 1000 px
    driver.execute_script('window.scrollTo(0,(window.pageYOffset+1000))')
    sleep(3) 

response = requests.get(url)
soup = bs(response.text,'html.parser',from_encoding="UTF-8")

source_list = []
duration_list = []

#Scrape source of the video
vids_source = soup.findAll('div',attrs={'class':'yt-lockup-byline'})
for i in vids_source:
    source = i.text
    source_list.append(source)

#Scrape video duration
vids_badge = soup.findAll('span',attrs={'class':'video-time'})
for i in vids_badge:
    duration = i.text
    duration_list.append(duration)

【问题讨论】:

  • 你能edit 这个问题并解释一下你在问题中添加的代码和链接的答案有什么问题吗?请添加有关您面临的问题的更多详细信息。
  • @MauricioAriasOlave。感谢您让我原来的问题不够具体。希望更新的版本更清晰。

标签: python-3.x selenium web-scraping youtube


【解决方案1】:

我认为您混淆了requestsselenium。 Requests 模块可以在不使用浏览器的情况下进行下载和抓取。根据您的要求,要向下滚动并获得更多结果,请单独使用 Selenium 并使用 XPATH 等 DOM 定位器抓取结果。

source_list = []
duration_list = []
for i in range(10):
    #scroll 1000 px
    driver.execute_script('window.scrollTo(0,(window.pageYOffset+1000))')
    sleep(3)
    elements = driver.find_elements_by_xpath('//div[@class = "yt-lockup-byline"]')
    for element in elements:
        source_list.append(element.text)
    elements = driver.find_elements_by_xpath('//span[@class = "video-time"]')
    for element in elements:
        duration_list.append(element.text)

所以我们首先滚动并获取所有元素文本。再次滚动并再次获取所有元素,依此类推。这样刮擦时无需使用requests

【讨论】:

  • 测试了上面的脚本,但 duration_list 和 source_list 都返回空列表。正在测试 API,希望我可以用它收集所有需要的数据。
猜你喜欢
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
相关资源
最近更新 更多