使用QWebElement解析HTML,如何提取图像?

时间:2013-01-05 15:31:23

标签: python qt webkit qtwebkit qwebelement

我很难使用QWebElement。作为练习,我想从第http://www.google.com页抓取“Google”徽标。图像在<div id="hplogo" ...>,但我不知道如何提取它。我如何在以下代码中使用“doc”QWebElement? (“CSS选择器”对我来说是一个模糊的术语)。 谢谢。

from PyQt4.QtGui import QApplication
from PyQt4.QtWebKit import QWebView
from PyQt4.QtCore import QUrl

app = QApplication([])
view = QWebView()
view.load(QUrl("http://google.com"))
view.show()
doc = view.page().currentFrame().documentElement()   # run this after 'loadFinished'

2 个答案:

答案 0 :(得分:3)

要获取“Google”徽标的网址,请执行以下操作:

elem = doc.findFirst("div#hplogo")
qstring = elem.attribute('style')
regexp = QRegExp("^(.*:)?url\((.*)\)")
if regexp.indexIn(qstring) > -1:
    imageURL = regexp.capturedTexts()[-1]

返回imageURL = "/images/srpr/logo1w.png"。在这种情况下,必须使用正则表达式,因为URL是字符串的一部分。要获取图像并将其显示在标签上,请执行以下操作:

request = QNetworkRequest(QUrl("http://www.google.com/images/srpr/logo1w.png"))
reply = view.page().networkAccessManager().get(request)
byte_array = reply.readAll()
image = QImage()
image.loadFromData(byte_array)
label = QLabel()
label.setPixmap(QPixmap(image))
label.show()

答案 1 :(得分:2)

您只需提取包含图片的src HTML标记的<img/>属性,然后使用src属性创建图片。

imgTags = doc.findAll("img")
imgRightTag = QWebElement()

# Find the right <img/> tag and put it in imgRightTag

imgURL = "http://www.google.com" + imgRightTag.attribute("src")
image = QImage(imgURL)