为什么在这个YouTube爬虫中没有输出显示在python中?
问题描述:
import requests
from bs4 import BeautifulSoup
youtube = "https://www.youtube.com/results?search_query="
def get_address(keyword):
query = youtube + keyword
source_code = requests.get(query)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")
for link in soup.findAll('a', {'id': 'video-title'}):
href = link.get('href')
print(href)
break
get_address("scishow")
程序运行成功,但不是显示视频的地址,它在输出中没有显示任何内容。为什么在这个YouTube爬虫中没有输出显示在python中?
答
Youtube在JavaScript上运行严重。我建议你使用硒。这里是你的更新代码:
from selenium import webdriver
from bs4 import BeautifulSoup
youtube = "https://www.youtube.com/results?search_query="
def get_address(keyword):
query = youtube + keyword
browser = webdriver.Chrome()
browser.get(query)
plain_text = browser.page_source
browser.quit()
soup = BeautifulSoup(plain_text, "html.parser")
for link in soup.findAll('a', {'id': 'video-title'}):
href = link.get('href')
print(href)
get_address("scishow")
你的代码很好,它没有在输出中显示任何内容的唯一原因是因为你正在寻找的'a'标签不存在。稍后使用JavaScript将''添加到页面中,当您检索初始HTML代码时,这当然没有执行。 – pacha
很可能是因为该页面正在使用'JS'。在这种情况下,请求将无用,而是使用'selenium'。 –