【问题标题】:Scraping a youtube page returns empty list抓取 youtube 页面会返回空列表
【发布时间】:2018-06-26 20:47:46
【问题描述】:

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

【问题讨论】:

    标签: python youtube beautifulsoup screen-scraping


    【解决方案1】:

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

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

    所以有几个选择:

    1. 更改查找视频链接的方式。

      这就是我的 curl 的视频链接标记的样子

      <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 上使用某种正则表达式来查找包含正确格式的正则表达式

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

      (你将不得不弄乱它不完美的正则表达式

    2. 使用Youtube API

      我会说这只是猜测您要做什么的首选方法。特别是 search api 他们甚至有 python sn-ps

    【讨论】:

    • 谢谢。我通过“检查”页面将类包含在代码中,这可能在我原始图片的下半部分可见。这样做有什么问题吗?另外你能告诉我你是如何获得这些视频链接标记的吗?
    • @beebeckzzz 我刚刚对你截图中的网址进行了卷曲curl https://www.youtube.com/results\?search_query\=hello
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2021-12-02
    • 2021-03-10
    • 2021-11-15
    • 1970-01-01
    相关资源
    最近更新 更多