将QWebView设置为移动维度

时间:2014-12-06 04:08:38

标签: pyqt4 qwebview qwebpage

我正在尝试以移动用户身份抓取此网站上的某些网页。我将用户代理设置为与iPhone匹配,并且我尝试将尺寸设置为匹配320x568。在那之后,我想截取屏幕截图,这样我就可以看到所有页面的样子,并确保一切正确。但是,它始终是桌面视图。加载特定页面时,如何将QWebViewQWebPage设置为移动维度?

self.qweb以下是QWebView。我使用QMainWindow看到了this question,但这是一个无头爬行,除了设置宽度和宽度之外,它的效果很好。 “浏览器”视图的高度。我尝试了它的变体,等待页面加载,然后重置大小,但它不起作用。

if hasattr(self, 'height') and hasattr(self, 'width'):
    size = self.qweb.page().mainFrame().contentsSize()
    self.qweb.resize(320, 568)

self.qweb.setPage(self.Page())
self.qweb.loadFinished.connect(self.loaded_page)

UPDATE 我刚试过这个,但是在加载页面后,返回的QSize是980x568。我甚至在页面加载后在loaded_page方法中尝试了相同的函数调用,但这也没有用。当页面上的其他操作执行时,它只会将视图重置为更大的大小。

    self.qweb.setPage(self.Page())
    self.qweb.page().setViewportSize(QtCore.QSize(320, 568))
    self.qweb.page().setPreferredContentsSize(QtCore.QSize(320, 568))
    self.qweb.loadFinished.connect(self.loaded_page)

def loaded_page(self):
    # this returns QSize(980,568)
    size = self.qweb.page().mainFrame().contentsSize()

这是我的Page设置

class Page(QWebPage):
    """QWebPage implementation with a custom user agent string"""

    def __init__(self):
        QWebPage.__init__(self)

        # Settings
        s = self.settings()
        s.setAttribute(QWebSettings.AutoLoadImages, True)
        s.setAttribute(QWebSettings.JavascriptCanOpenWindows, True)
        s.setAttribute(QWebSettings.PluginsEnabled, True)

1 个答案:

答案 0 :(得分:1)

听起来你需要设置preferred contents size

    page.setPreferredContentsSize(QtCore.QSize(320, 568))

但如果没有给出正确的结果,请尝试设置viewport size

    page.setViewportSize(QtCore.QSize(320, 568))