抓取一个 youtube 页面 returns 空列表

Scraping a youtube page returns empty list

我一直在尝试从这个 YouTube 页面上抓取链接。 .但是,链接变量是空的。我做错了什么??

我认为问题在于您尝试查找 link 的方式。当我 curl 和你一样 url curl https://www.youtube.com/results\?search_query\=hello

我没有得到任何带有 css 元素的 a 标签。这似乎是基于 header 中设置的 User-Agent 属性。

所以有几个选项:

  1. 更改您查找视频的方式 link。

    这就是我的 curl

    的视频 links 标记的样子
    <a href="/watch?v=YQHsXMglC9A" class="yt-uix-tile-link yt-ui-ellipsis yt-ui-ellipsis-2 yt-uix-sessionlink spf-link " data-sessionlink="itct=CFcQ3DAYASITCLfbt4P439gCFQzYfgodkDYKVij0JFIFaGVsbG8" title="Adele - Hello" aria-describedby="description-id-484065" rel="spf-prefetch" dir="ltr">Adele - Hello</a>
    

    如您所见,此处不存在 类。

    但是您可以在 href 上使用某种正则表达式来查找包含正确格式的 href

    page.find_all("a", {'href': re.compile('/watch?v=[A-Za-z0-9_\-]`)})
    

    (您将不得不弄乱正则表达式,它并不完美

  2. 使用Youtube API

    我想说这将是首选的方法,只是猜测您正在尝试做什么。具体来说 search api 他们甚至有 python 片段