2017-06-23 87 views
0

致力於編寫Python腳本以在運行其JavaScript後刮取網頁。我意識到我需要運行JS,因爲使用請求不會返回任何數據。我發現什麼似乎是我的解決方案here,但我仍然有一些問題。Pycharm上的PyQt5,未使用的模塊

首先,本教程使用PyQt4,我已經安裝並嘗試了多個版本的PyQt 4和5從項目解釋器,仍然找不到解決方案。下面是相關代碼:

import PyQt5.QtWebEngineWidgets 
import PyQt5.QtCore 
import PyQt5.QtWebEngine 
import PyQt5.QtWebEngineCore 


class Render(QWebpage): 
    def __init__(self, url): 
     self.app = QApplication(sys.argv) 
     QWebPage.__init__(self) 
     self.loadFinished.connect(self._loadFinished) 
     self.mainFrame().load(QUrl(url)) 
     self.app.exec_() 

    def _load_finished(self, result): 
     self.frame = self.mainFrame() 
     self.app.quit() 

的QWebpage,QApplication的,和QUrl來電都未能解決的參考'的錯誤,這四個PyQt5 import語句也都有「未使用的導入聲明」的指示。我已經嘗試了幾個小時來解決這些問題,卸載並重新安裝PyQt幾次,並搜索互聯網

任何意見都會很棒,謝謝!

回答

1

你的進口是不正確的,在Python有很多方法可以做到這一點:在你的情況可能是這樣的:

1. from package import class


import sys 

from PyQt5.QtCore import QUrl 
from PyQt5.QtWebKitWidgets import QWebPage 
from PyQt5.QtWidgets import QApplication 


# Take this class for granted.Just use result of rendering. 
class Render(QWebPage): 
    def __init__(self, url): 
     self.app = QApplication(sys.argv) 
     QWebPage.__init__(self) 
     self.loadFinished.connect(self._loadFinished) 
     self.mainFrame().load(QUrl(url)) 
     self.app.exec_() 

    def _loadFinished(self, result): 
     self.frame = self.mainFrame() 
     self.app.quit() 


url = 'http://pycoders.com/archive/' 
r = Render(url) 
result = r.frame.toHtml() 
print(result) 
  • import package,那麼你應該使用每個元素爲package.class

  • import sys 
    from PyQt5 import QtWebKitWidgets, QtCore, QtWidgets 
    
    
    class Render(QtWebKitWidgets.QWebPage): 
        def __init__(self, url): 
         self.app = QtWidgets.QApplication(sys.argv) 
         QtWebKitWidgets.QWebPage.__init__(self) 
         self.loadFinished.connect(self._loadFinished) 
         self.mainFrame().load(QtCore.QUrl(url)) 
         self.app.exec_() 
    
        def _loadFinished(self, result): 
         self.frame = self.mainFrame() 
         self.app.quit() 
    
    
    url = 'http://pycoders.com/archive/' 
    r = Render(url) 
    result = r.frame.toHtml() 
    print(result) 
    

    如果您正在使用pycharm存在着pycharm正確導入的包,爲你一個很簡單的方法,爲此,你必須將生成錯誤上面的字的點,並執行Ctrl+M

    注:如果你使用windows,你將無法使用這些模塊,因爲Qt,因此PyQt,使用鉻,並且他們似乎有Windows的問題。

    +0

    這是一個很好的答案!感謝您對我進口產品的幫助。我是來自Java的Python的新手,所以這幫助了很多。還有一個問題,我注意到了QtWebKitWidgets導入,但是當我用QWebPage調用它時,我得到了錯誤,Pycharm說它找不到參考。我試過QtWebEngine和QtWebEngineCore來取代它,但我似乎無法修復它。有任何想法嗎? –

    +0

    貌似QWebPage在5.6版PyQt5中被刪除,我有v5.8.2,Pycharm只能回到5.6。我現在正在尋找解決方案,任何建議都會很棒! –

    +0

    我向您展示的代碼已經從pyqt 5.7向前版本中測試過了。 – eyllanesc