2016-09-21 38 views
3

我現在正在執行一個任務,從一個似乎由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 

回答

0

看看使用硒庫!我已經用這個圖書館颳了多個網站。人們說它速度很慢,但對我而言,它效果很好。

此外,如果你還不熟悉網頁抓取,請查看Xpaths是否需要抓取否則難以獲取的元素。使用Xpath,您需要在Chrome瀏覽器中執行以下操作:右鍵單擊頁面,顯示元素,展開所有標記,然後右鍵單擊要擦除的標記,然後單擊複製Xpath,然後將路徑粘貼到模塊中硒庫。真的很簡單,繼承人硒信息的鏈接。

http://selenium-python.readthedocs.io/

+0

您還需要下載一個驅動鉻,看看YouTube的爲,有用於設置了一些精彩的視頻! – BLang

+0

感謝您的評論。我還在其他一些任務中使用硒。但是我認爲這樣做的缺點是你必須在獲得源代碼之前先等待頁面加載,從而減緩過程。這就是爲什麼我通常在網絡報廢中使用Beautifulsoup。或者我錯過任何東西?這是一種通過獲取頁​​面源代碼而無需完全加載頁面來使用硒的方法嗎? –

+0

嗯,我不確定這在硒方面(速度通常不是我的目的問題),我沒有意識到BS可以在不加載頁面的情況下獲得頁面源代碼。對不起,我忍不住,但這是一個很好的功能感謝通知! – BLang