我正在尝试以移动用户的身份抓取此站点上的某些页面。我将用户代理设置为匹配 iPhone,并尝试将尺寸设置为匹配 320x568。在那之后,我想截屏,这样我就可以看到所有页面的样子,并确保一切都是正确的。但是,它始终是桌面视图。加载特定页面时如何设置QWebView
或移动尺寸?QWebPage
下面self.qweb
是一个QWebView
. 我使用看到了这个问题QMainWindow
,但这是一个无头爬行,除了设置“浏览器”视图的宽度和高度外,它的效果很好。我尝试了它的变体,等待页面加载,然后重新设置大小,但它不起作用。
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)
更新我也试过了,但是页面加载后,返回的 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)