我正在尝试以移动用户身份抓取此网站上的某些网页。我将用户代理设置为与iPhone匹配,并且我尝试将尺寸设置为匹配320x568。在那之后,我想截取屏幕截图,这样我就可以看到所有页面的样子,并确保一切正确。但是,它始终是桌面视图。加载特定页面时,如何将QWebView
或QWebPage
设置为移动维度?
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)
答案 0 :(得分:1)
听起来你需要设置preferred contents size:
page.setPreferredContentsSize(QtCore.QSize(320, 568))
但如果没有给出正确的结果,请尝试设置viewport size:
page.setViewportSize(QtCore.QSize(320, 568))