首页 > 解决方案 > 网页抓取 Youtube 频道以获取视频列表和其他详细信息

问题描述

我正在尝试抓取网站所有上传视频的列表。我Beautifulsoap用来获取以下详细信息:
(1) 标题
(2) 浏览量
(2) 上传日期

我做了一些检查,发现div id="details" class="style-scope ytd-grid-video-renderer可以用来获取详细信息。这是我的 Python 代码:

from bs4 import BeautifulSoup as bs
import requests

my_url = "https://www.youtube.com/user/aandawesome/videos"

r = requests.get(my_url)
page = r.text
soup=bs(page,'html.parser')
res=soup.find_all("div",{
    "id": "dismissable",
    "class": ["style-scope", "ytd-grid-video-renderer"]
})

print(res)

但我无法访问该 div。输出为空。可以做些什么来解决这个问题?

标签: pythonweb-scrapingbeautifulsoup

解决方案


我希望下面的代码对你有帮助。

import pandas as pd
pd.set_option('max_colwidth',-1)

from bs4 import BeautifulSoup as bs
import requests

my_url = "https://www.youtube.com/user/aandawesome/videos"

r = requests.get(my_url)
page = (r.text)
soup=bs(page,'html.parser')

d = []
for match in soup.find_all('div',class_="yt-lockup-content"):
    view = match.find('ul',class_="yt-lockup-meta-info")
    d.append(
        {
            'Title': match.a.text,
            'View': view.text.split("views")[0],
            'Upload date':view.text.split("views")[1]
        }
    )

pd.DataFrame(d)

推荐阅读