Si une page est complètement chargée sur un QWebView, comment puis-je obtenir les données pour une certaine image (probablement par dom?)une image à partir d'une page Web dans PyQt4 qtwebkit
Répondre
Je vais essayer de prendre un coup de couteau à ceci:
Si vous voulez obtenir l'url d'une image à l'aide jQuery vous pouvez utiliser une approche comme celle-ci:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
app = QApplication(sys.argv)
web = QWebView()
web.load(QUrl("http://google.com"))
frame = web.page().mainFrame()
web.show()
def loadFinished(ok):
print 'loaded'
frame.evaluateJavaScript("""
//this is a hack to load an external javascript script
//credit to Vincent Robert from http://stackoverflow.com/questions/756382/bookmarklet-wait-until-javascript-is-loaded
function loadScript(url, callback)
{
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = url;
// Attach handlers
var done = false;
script.onload = script.onreadystatechange = function()
{
if(!done && (!this.readyState
|| this.readyState == "loaded"
|| this.readyState == "complete"))
{
done = true;
// Continue your code
callback();
}
};
head.appendChild(script);
}
// This code loads jQuery and executes some code when jQuery is loaded, using above trick
loadScript("http://code.jquery.com/jquery-latest.js", function(){
//we can inject an image into the page like this:
$(document.body).append('<img src="http://catsplanet.files.wordpress.com/2009/08/kitten_01.jpg" id="kitten"/>');
//you can get the url before the image loads like so:
//detectedKittenImageUrl = $('#kitten').attr('src');
//alert('detectedKittenImageUrl = ' + detectedKittenImageUrl);
//but this is how to get the url after it is loaded, by using jquery to bind to it's load function:
$('#kitten').bind('load',function(){
//the injected image has loaded
detectedKittenImageUrl = $('#kitten').attr('src');
alert('detectedKittenImageUrl = ' + detectedKittenImageUrl);
//Google's logo image url is provided by css as opposed to using an IMG tag:
//it has probabled loaded befor the kitten image which was injected after load
//we can get the url of Google's logo like so:
detectedGoogleLogoImageUrl = $('#logo').css('background-image');
alert('detectedGoogleLogoImageUrl = ' + detectedGoogleLogoImageUrl);
});
});
""")
app.connect(web, SIGNAL("loadFinished(bool)"), loadFinished)
sys.exit(app.exec_())
Si vous ne voulez pas charger jquery à partir du Web e temps haque vous pouvez télécharger jquery puis injectent comme ceci:
jQuerySource = open('jquery.min.js').read()
frame.evaluateJavaScript(jQuerySource)
vous pourriez aussi pas utiliser jQuery du tout, mais il est souvent une manipulation plus aisée, en fonction de ce que vous voulez faire.
Si vous voulez obtenir le contenu de l'image en tant que bitmap pas une URL, il peut être possible d'utiliser un objet canvas html, je ne sais pas si vous allez rencontrer des problèmes de sécurité inter-domaines. Une autre approche consisterait à utiliser pyQT pour obtenir l'image telle qu'elle apparaît. Si vous avez un format PNG avec transparence alpha, ce serait plus complexe, mais pour un JPEG opaque, par exemple, ce serait plus facile. Vous pouvez rechercher un code de capture d'écran de la page Web pour savoir comment procéder ou vous pouvez le télécharger à partir de l'URL trouvée dans Python. Une fois que vous avez eu la variable url en Javascript, vous devrez probablement utiliser la technique cross-the-boarder présentée sur this great slideshow pour obtenir la variable en Python à télécharger.
http://www.sivachandran.in/index.php/blogs/web-automation-using-pyqt4-and-jquery peut être aussi un exemple de code utile.
- 1. Comment accéder à DOM d'une page Web dans QtWebKit?
- 2. comment obtenir une réponse dans QtWebKit
- 3. Qt Image From Web
- 4. Qt4: Comment appeler les fonctions JavaScript dans une page à partir de C++ via QtWebkit?
- 5. comment charger une image à partir du Web dans Java
- 6. Comment convertir une page Web en image?
- 7. PyQt4.QtWebKit: QWebPage QWebView définit le délai d'attente lors de l'arrêt du chargement
- 8. Numériser une image à partir d'asp.net
- 9. Image d'arrière-plan pour une page Web
- 10. Affichage d'une image sur une page Web ASP.NET (3.5) à partir d'une base de données
- 11. QtWebKit Manager
- 12. comment afficher une image dans la page Web
- 13. QtWebkit: Support pour la page javascript ouvre?
- 14. Comment puis-je ajouter une image à un QWidget dans PyQt4
- 15. Récupération d'informations à partir d'une page Web
- 16. Comment imprimer une grande image unique dans une page Web sur plusieurs pages dans IE
- 17. Désactiver glisser/déposer dans QtWebkit
- 18. Actualiser une page Web automatiquement à partir d'une boucle
- 19. Charger une image à partir d'une URL
- 20. Inclure une image dynamique dans une page Web à l'aide du POST?
- 21. Charger une photo dans une page Web à partir de Flash
- 22. Récupérer une image à partir d'Internet
- 23. Comment convertir une page Web en une image dans un kit d'outils Web javascript/Google
- 24. Comment convertir une page web en image en utilisant MATLAB?
- 25. Envoyer un fichier à partir d'une page Web dans Outlook
- 26. Envoi d'un en-tête personnalisé avec la requête qtwebkit
- 27. Superposition d'une image sur une page Web entière
- 28. Accéder à une image dans une image
- 29. Plugin PyQt4 dans l'application C++
- 30. retour plus d'une image à partir d'un service Web .NET