请求VS硒的Python
问题描述:
当我使用硒图书馆查找相关渠道在YouTube频道页面长度它给了我12,但是当我使用请求库中查找长度它给我0。我想使用请求,请给我最好的解决方案。 这里是我的代码,请求VS硒的Python
//Requests
import requests
from bs4 import BeautifulSoup
import time
r = requests.get("https://www.youtube.com/channel/UCoykjkkJxsz7JukJR7mGrwg/about")
soup = BeautifulSoup(r.content, 'html.parser')
bb = soup.find_all("ytd-mini-channel-renderer",class_="style-scope ytd-vertical-channel-section-renderer")
print(len(bb))
//selenium
from selenium import webdriver
from bs4 import BeautifulSoup
import time
driver = webdriver.Chrome(chrome_path)
driver.get("https://www.youtube.com/channel/UCoykjkkJxsz7JukJR7mGrwg/about")
soup = BeautifulSoup(driver.page_source, 'html.parser')
bb = soup.find_all("ytd-mini-channel-renderer",class_="style-scope ytd-vertical-channel-section-renderer")
print(len(bb))
答
每次我遇到这样一个问题的时候,那是因为JS是创造我后的数据。如果是这种情况,您可能无法使用请求,因为它无法处理JS。
如果您在浏览器中导航到该YouTube页面,则可以看到“ytd-mini-channel-renderer”存在,如果您检查它,但是如果您查看源代码,则会得到0个结果。您可以从“查看源代码”中看到的代码是请求获得的代码。
对呀!但你知道硒与请求相比是慢的 –
我想用请求 –
来做这件事。不幸的是,我不认为只有请求才可能有解决方法。一些东西必须能够运行JavaScript。你可以尝试使用PhantomJS,因为它可能比Chrome更快。 – SuperStew