이 사이트의 특정 페이지를 모바일 사용자로 크롤링하려고합니다. 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
제 문제는 사용자 에이전트와 있었고,이 훌륭한 작품을했습니다! – Nathan