我正在尝试获得youtube视频的标题,并给出一个链接。
但是我无法访问包含标题的元素。我正在使用bs4来解析html。我注意到我无法访问youtube页面中'ytd-app‘标签内的任何元素。
import bs4
import requests
listed_url = "https://www.youtube.com/watch?v=9IfT8KXX_9c&list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v&index=31"
listed = requests.get(listed_url)
soup = bs4.BeautifulSoup(listed.text, "html.parser")
a = soup.find_all(attrs={"class": "style-scope ytd-video-primary-info-renderer"})
print(a)
那么我怎么才能得到视频标题呢?是不是我做错了什么,或者youtube故意创建了一个这样的标签来防止web_scraping?
发布于 2021-10-14 13:32:13
您正在使用的类是通过Javascript呈现的,并且所有内容都是动态的,因此使用bs4
很难找到任何数据
因此,您可以通过手动在soup中查找数据并查找特定标记
您也可以尝试使用pytube
import bs4
import requests
listed_url = "https://www.youtube.com/watch?v=9IfT8KXX_9c&list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v&index=31"
listed = requests.get(listed_url)
soup = bs4.BeautifulSoup(listed.text, "html.parser")
soup.find("title").get_text()
https://stackoverflow.com/questions/69571558
复制相似问题