1
我试图抓取本网站上的某些页面作为移动用户。我将用户代理设置为与iPhone匹配,并试图将尺寸设置为匹配320x568。之后,我想要截图,以便查看所有网页的外观,并确保一切正确。但是,它始终是桌面视图。当我加载特定页面时,如何将QWebView
或QWebPage
设置为移动尺寸?将QWebView设置为移动尺寸
self.qweb
以下是QWebView
。我看到this question使用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)
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)
其实划伤,这可能是工作... – Nathan 2014-12-06 18:19:11
我的问题是与用户代理,这个作品非常感谢! – Nathan 2014-12-06 18:28:08