我現在正在執行一個任務,從一個似乎由javascript呈現的課程列表中系統地刮取內容。我在網上使用了PyQt4的一些腳本,但失敗了(我在下面複製)。更確切地說,該腳本在一些使用JavaScript加載內容並單擊其特定鏈接的網站上工作。但是,下面的網站(ouhk,我在腳本中複製的鏈接)似乎沒有鏈接,用於指導用戶特定的內容,即節目信息,節目結構和費用等。相反,它使用標籤容器和FTP存儲和加載信息(我從它的源代碼中找到)。使用Python PyQt的網頁內容刮目錄PyQt
我想知道是否有修改下面的腳本,以便我可以通過使用PyQt4刮這些內容,或者我必須尋找其他方法來達到這個目的?
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import html
from bs4 import BeautifulSoup
#import urllib.request
#from urllib.parse import urljoin
#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://www.ouhk.edu.hk/wcsprd/Satellite?pagename=OUHK/tcSchSing2014&c=C_LIPACE&cid=1450268562831&lang=eng&sch=LIP'
r = Render(url)
result = r.frame.toHtml()
print result
您還需要下載一個驅動鉻,看看YouTube的爲,有用於設置了一些精彩的視頻! – BLang
感謝您的評論。我還在其他一些任務中使用硒。但是我認爲這樣做的缺點是你必須在獲得源代碼之前先等待頁面加載,從而減緩過程。這就是爲什麼我通常在網絡報廢中使用Beautifulsoup。或者我錯過任何東西?這是一種通過獲取頁面源代碼而無需完全加載頁面來使用硒的方法嗎? –
嗯,我不確定這在硒方面(速度通常不是我的目的問題),我沒有意識到BS可以在不加載頁面的情況下獲得頁面源代碼。對不起,我忍不住,但這是一個很好的功能感謝通知! – BLang