J'essaie de charger une page youtube et obtenir l'élément <embed>
comme suit. Toutefois, l'élément embed ne peut pas être trouvé (soup.find('embed')
renvoie None
).Simuler l'accès au navigateur pour charger tous les éléments html
import urllib
import urllib2
from bs4 import BeautifulSoup
import mechanize
YT_URL = 'http://www.youtube.com/watch'
vidId = 'OuSdU8tbcHY'
br = mechanize.Browser()
# Browser options
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open('%s?v=%s' % (YT_URL, vidId))
soup = BeautifulSoup(br.response().read())
print soup.find('embed')
Cependant, quand j'écris la soupe à un fichier html et le charger dans un navigateur, il charge l'élément <embed>
. Vraisemblablement ceci a quelque chose à faire avec le navigateur étant différent pour mécaniser et une sorte de magie?
Comment puis-je simuler le chargement de la page par le navigateur afin que je puisse voir l'élément <embed>
?
SÉLÉNIUM! IL EST VOTRE RÉPONSE –