gpt4 book ai didi

python - 在 PyQt4 QtWebkit 中从网页访问图像

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:00 32 4
gpt4 key购买 nike

如果一个页面已经完全加载到 QWebView 上,我如何获取特定图像的数据(可能通过 dom?)

最佳答案

我会试着尝试一下:

如果您想使用 jQuery 获取图像的 url,您可以使用如下方法:

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_())

如果你不想每次都从 web 加载 jquery,你可以下载 jquery 然后像这样注入(inject):

jQuerySource = open('jquery.min.js').read()
frame.evaluateJavaScript(jQuerySource)

你也可以根本不使用 jQuery,但它通常会使操作更容易,具体取决于你还想做什么。

如果您想以位图而不是 url 的形式获取图像内容,可以使用 html canvas 对象,我不确定您是否会遇到跨域安全问题。另一种方法是使用 pyQT 获取显示的图像。如果您有一个具有 alpha 透明度的 PNG,这会更复杂,但是对于不透明的 JPEG,例如,它会更容易。您可以在 Google 周围搜索一些网页截图代码,了解如何执行此操作,或者您可以从找到的 Python 网址下载。一旦你在 Javascript 中有了 url 变量,你可能不得不使用 this great slideshow 中介绍的跨界技术。将变量导入 Python 进行下载。

http://www.sivachandran.in/index.php/blogs/web-automation-using-pyqt4-and-jquery也可能是有用的示例代码。

关于python - 在 PyQt4 QtWebkit 中从网页访问图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793641/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com