2017-10-14 35 views
0

当我使用硒图书馆查找相关渠道在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)) 

回答

0

每次我遇到这样一个问题的时候,那是因为JS是创造我后的数据。如果是这种情况,您可能无法使用请求,因为它无法处理JS。

如果您在浏览器中导航到该YouTube页面,则可以看到“ytd-mini-channel-renderer”存在,如果您检查它,但是如果您查看源代码,则会得到0个结果。您可以从“查看源代码”中看到的代码是请求获得的代码。

+0

对呀!但你知道硒与请求相比是慢的 –

+0

我想用请求 –

+0

来做这件事。不幸的是,我不认为只有请求才可能有解决方法。一些东西必须能够运行JavaScript。你可以尝试使用PhantomJS,因为它可能比Chrome更快。 – SuperStew