Python3一次可以解析来自youtube的30多个视频

Python3一次可以解析来自youtube的30多个视频,python,youtube,beautifulsoup,Python,Youtube,Beautifulsoup,我最近决定使用python进行解析,我制定了一个项目,需要从所有youtubers视频中获取数据。我决定只要转到他们频道中的视频标签,对其链接进行解析就很容易了。然而,当我解析它时,我一次只能得到30个视频。我想知道为什么这是因为链接似乎永远不会改变,当你加载更多。就像有办法绕过它一样。 这是我的密码 import bs4 as bs import requests page = requests.get("/run/media/morpheous/PORTEUS/Workspace/Pyth

我最近决定使用python进行解析,我制定了一个项目,需要从所有youtubers视频中获取数据。我决定只要转到他们频道中的视频标签,对其链接进行解析就很容易了。然而,当我解析它时,我一次只能得到30个视频。我想知道为什么这是因为链接似乎永远不会改变,当你加载更多。就像有办法绕过它一样。 这是我的密码

import bs4 as bs
import requests

page = requests.get("/run/media/morpheous/PORTEUS/Workspace/Python/Parsing/parse.py")
soup = bs.BeautifulSoup(page.text, 'html.parser')
soup.find_all("a", "watch-view-count")
k = soup.find_all("div", "yt-uix-sessionlink yt-uix-tile-link  spf-link  yt-ui-ellipsis yt-ui-ellipsis-2")
storage = open('data.csv', 'a')
storage.write(k.get('href')
storage.close()

非常感谢您的帮助,谢谢

首先我要说我同意@jornsharpe。使用是更明智的选择

然而,如果你必须通过刮擦来实现这一点,这里有一个建议

让我们以我们的视频页面为例。页面底部的“加载更多”按钮有一个带有此属性的
按钮
标记(您可以使用浏览器的“检查元素”功能查看此值):

data uix load more href=“/browse_ajax?action_continuation=1&;continuation=4QMFSGJAEHHVQ0JKEWNZWR1DLFTDGZUL9VNEPYAVEAJEVNWJJJV1JSYJNZ0FEZ0JZQUZXQUHVQK1YZ0JBQSUZRCUZRA%253D%253D%253D”

单击“加载更多”按钮时,它会向此
/browse\u AJAX
url发出AJAX请求。响应是一个JSON对象,如下所示:

{
    content_html: "the html for the videos",
    load_more_widget_html: "      \n\n\n\n    \u003cbutton class=\"yt-uix-button yt-uix-button-size-default yt-uix-button-default load-more-button yt-uix-load-more browse-items-load-more-button\" type=\"button\" onclick=\";return false;\" aria-label=\"Load more\n\" data-uix-load-more-href=\"\/browse_ajax?action_continuation=1\u0026amp;continuation=4qmFsgJAEhhVQ0JKeWNzbWR1dllFTDgzUl9VNEpyaVEaJEVnWjJhV1JsYjNNZ0FEZ0JZQUZxQUhvQk03Z0JBQSUzRCUzRA%253D%253D\" data-uix-load-more-target-id=\"channels-browse-content-grid\"\u003e\u003cspan class=\"yt-uix-button-content\"\u003e  \u003cspan class=\"load-more-loading hid\"\u003e\n      \u003cspan class=\"yt-spinner\"\u003e\n      \u003cspan class=\"yt-spinner-img  yt-sprite\" title=\"Loading icon\"\u003e\u003c\/span\u003e\n\nLoading...\n  \u003c\/span\u003e\n\n  \u003c\/span\u003e\n  \u003cspan class=\"load-more-text\"\u003e\n    Load more\n\n  \u003c\/span\u003e\n\u003c\/span\u003e\u003c\/button\u003e\n\n\n"
}
content\u html
包含新视频页面的html。您可以解析它以获取该页面中的视频。要进入下一页,您需要使用
load\u more\u widget\u html
值并提取url,该url类似于:

data uix load more href=“/browse_ajax?action_continuation=1&;continuation=4QMFSGJAEHHVQ0JKEWNZWR1DLFTDGZUL9VNEPYAVEAJEVNWJJJV1JSYJNZ0FEZ0JZQUZXQUHVQK1YZ0JBQSUZRCUZRA%253D%253D%253D”


url中唯一改变的是
continuation
参数的值。你可以继续请求这个“延续”url,直到返回的JSON对象没有
load\u more\u widget\u html

为什么不查看一下YouTube的API,而不是删除它?我想删除它,让它比仅仅使用API更具挑战性。谢谢你的回答,我刚刚开始工作!