为什么find\u all BeautifulSoup4函数不返回任何内容?

2024-06-16 10:19:04 发布

您现在位置:Python中文网/ 问答频道 /正文

对于beautiful soup 4是新手,当我在YouTube上搜索内容时,我无法使用这个简单的代码来获取标签的内容。当我打印容器时,它只是将“[]”打印为我假设的空变量。你知道为什么这没有发现什么吗?这和你在YouTube上没有抓住合适的标签有关吗?在搜索HTML中,有一个结果的以下标记:

<a id="video-title" class="yt-simple-endpoint style-scope ytd-video-renderer" aria-label="Kendrick Lamar - HUMBLE. by KendrickLamarVEVO 5 months ago 3 minutes, 4 seconds 322,571,817 views" href="https://www.youtube.com/watch?v=tvTRZJ-4EyI" title="Kendrick Lamar - HUMBLE.">
                Kendrick Lamar - HUMBLE.
              </a>

Python代码:

^{pr2}$

Tags: 代码标记内容titleyoutubehtmlvideo标签
2条回答

如果检查url的源代码,则找不到任何id="video-title"这意味着此页面正在动态加载内容。beauthulsoup本身不支持动态加载。试着把它和其他东西结合起来,比如selenium或{a3},而且this post可能会有帮助

在youtube页面中动态加载结果,因此id和类名将被更改。 当您尝试对页面进行解析时,请确保在urllib中而不是在浏览器中加载页面源代码时读取它 看看它能解决你的问题:

from bs4 import BeautifulSoup as bs
from urllib.request import *
page = urlopen('https://www.youtube.com/results?search_query=damn').read()
soup = bs(page,'html.parser')
results = soup.find_all('a',{'class':'yt-uix-sessionlink'})
for link in results:
    print(l.get("href"))

代码将显示页面中的所有url,因此您也应该对其进行解析。在

相关问题 更多 >