2014-12-06 4 views
1

이 사이트의 특정 페이지를 모바일 사용자로 크롤링하려고합니다. iPhone과 일치하도록 사용자 에이전트를 설정하고 크기를 320x568과 일치하도록 설정하려고합니다. 그 후, 나는 모든 페이지가 어떻게 보이는지를 볼 수있는 스크린 샷을 찍고 모든 것이 올바른지 확인하고자한다. 그러나 항상 데스크톱보기입니다. 특정 페이지를로드 할 때 QWebView 또는 QWebPage을 모바일 크기로 설정하려면 어떻게해야합니까?QWebView를 모바일 크기로 설정

이하 self.qwebQWebView입니다. 나는 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) 

답변

1

preferred contents size :

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

하지만 그건 올바른 결과를 제공하지 않는 경우, 설정을 시도

viewport size :

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

사실,이게 작동 할 수도 있습니다 ... – Nathan

+0

제 문제는 사용자 에이전트와 있었고,이 훌륭한 작품을했습니다! – Nathan

관련 문제