2017-10-14 2 views
0

Wenn ich Selen-Bibliothek verwenden, um die Länge des verwandten Kanals in YouTube-Kanal-Seite zu finden, gibt es mir 12, aber wenn ich Anfragen Bibliothek verwenden, um die Länge zu finden, gibt es mir 0. Ich möchte Anfragen verwenden, bitte geben Sie mir die beste Lösung. hier ist mein Code,Anfragen vs Selenium 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)) 

Antwort

0

Jedes Mal, wenn ich in ein Problem wie dieses ausgeführt haben, war es, weil JS die Daten war die Schaffung war ich nach. Wenn dies der Fall ist, werden Sie wahrscheinlich keine Anfragen verwenden können, da es nicht mit dem JS umgehen kann.

Wenn Sie in einem Browser zu dieser youtube-Seite navigieren, können Sie sehen, dass "ytd-mini-channel-renderer" vorhanden ist, wenn Sie ihn untersuchen, aber wenn Sie Quelle anzeigen, erhalten Sie 0 Ergebnisse. Der Code, den Sie aus "Quelle anzeigen" sehen können, ist, was Anfragen bekommen.

+0

ja richtig! aber du weißt, Selen ist langsam im Vergleich zu Anfragen –

+0

Ich möchte diese Dinge mit Anfragen –

+0

tun Leider denke ich nicht, eine Problemumgehung ist nur mit Anfragen möglich. Etwas muss in der Lage sein, das Javascript auszuführen. Sie könnten versuchen, PhantomJS zu verwenden, da es vielleicht schneller ist als Chrom. – SuperStew