2017-03-24 9 views
0

私はPyQt4を使っていくつかのウェブスクレイピングを試みていますが、私が掻き回そうとしているサイトは、私がモバイルデバイスだと思っていて、利用可能なデータセットを提示していませんデスクトップやラップトップ(Mozilla/5.0ユーザエージェントを使用していても)。PyQt4&BeautifulSoupブラウザウィンドウのサイズを設定する

「whatsmyuseragent.com」に自分のURLを設定している理由を調べてみます。私のスクリーン解像度は1920px x 1080pxですが、私のブラウザウィンドウサイズは0px x 0pxなので、これは問題なのでしょうか?ここで

は、以下の私のコードです。私がデスクトップやラップトップであると信じるために掻き回しているサイトを説得するために私が何を変える必要があるかについての提案は(モバイルではなく)高く評価されます。ありがとう。

import sys 
from PyQt4 import QtGui 
from PyQt4.QtGui import QApplication 
from PyQt4.QtCore import QUrl 
from PyQt4.QtWebKit import QWebPage 
from PyQt4.QtNetwork import QNetworkRequest 

import bs4 as bs 
import urllib.request 

class Client(QWebPage): 

    def __init__ (self, url): 
     self.app = QApplication(sys.argv) 
     QWebPage.__init__(self) 
     self.loadFinished.connect(self.on_page_load) 
     self.request = QNetworkRequest() 
     self.request.setUrl(QUrl(url)) 
     self.request.setRawHeader("User-Agent",'Mozilla/5.0') 
     self.mainFrame().load(self.request) 
     self.app.exec_() 

    def on_page_load (self): 
     self.app.quit() 

url = 'http://www.whatsmyuseragent.com' 
client_response = Client(url) 
source = client_response.mainFrame().toHtml() 
soup = bs.BeautifulSoup(source, 'lxml') 

print(soup.prettify()) 

答えて

1

Viewport Sizeを設定してください:

import sys 
import re 
from PyQt4 import QtGui 
from PyQt4.QtGui import QApplication 
from PyQt4.QtCore import QUrl, QSize 
from PyQt4.QtWebKit import QWebPage 
from PyQt4.QtNetwork import QNetworkRequest 

import bs4 as bs 

class Client(QWebPage): 

    def __init__ (self, url): 
     self.app = QApplication(sys.argv) 
     QWebPage.__init__(self) 

     # good ol'size 
     size = QSize(640, 480) 
     self.setViewportSize(size) 

     self.loadFinished.connect(self.on_page_load) 
     self.request = QNetworkRequest() 
     self.request.setUrl(QUrl(url)) 
     self.request.setRawHeader("User-Agent",'Mozilla/5.0') 
     self.mainFrame().load(self.request) 
     self.app.exec_() 

    def on_page_load (self): 
     self.app.quit() 

url = 'http://www.whatsmyuseragent.com' 
client_response = Client(url) 
source = client_response.mainFrame().toHtml() 
soup = bs.BeautifulSoup(source, 'lxml') 

# some meat from the soup 
print(re.sub('\s+', ' ', soup.find(class_='browser-window').text)) 

これは私のために、以下を生成します。

625 px x 465 px