2016-09-21 12 views
3

JavaScriptでレンダリングされているようなコースリストからコンテンツを系統的にスクラップする作業を行っています。私はWeb上でPyQt4を使ったいくつかのスクリプトに従ったが、失敗した。より正確に言えば、スクリプトはjavascriptを使っていくつかのウェブサイトで動作し、特定のリンクをクリックしてコンテンツを読み込みます。しかし、以下のウェブサイト(ouhk、スクリプトの下にコピーしたリンク)は、ユーザーに特定のコンテンツ(プログラム情報、プログラムの構造、料金など)を誘導するためのリンクを持たないように見えます。代わりにタグコンテナとFTPを使用します(私はそのソースコードから見つけた)情報の格納とロード。Python PyQtを使用したJavascriptコンテンツでのWebスクレイピング

次のスクリプトを修正して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を使用すると、クロムブラウザで行う必要があるのは、ページを右クリックし、要素をinspectし、すべてのタグを展開してから、スクラップしたいタグを右クリックして、「Xpathをコピー」をクリックするだけです。セレンライブラリ。本当にシンプルで、セレン情報のリンクがあります。

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

+0

また、それを設定するためのいくつかの素晴らしいビデオがあり、そのためにYouTubeに見て、クロムのドライバーをダウンロードする必要があります! – BLang

+0

コメントありがとうございます。私はまた、いくつかの他のタスクでセレンを使用しています。しかし、私が考えるこの欠点は、ソースコードを取得する前にロードするページを待たなければならないため、プロセスが大幅に遅くなることです。だから私は通常、Web廃棄でBeautifulsoupを使用しています。それとも私は何かが欠けていますか?これは、ページを完全にロードせずにページソースコードを取得することによってセレンを使用する方法ですか? –

+0

ええ、私はセレンの点ではそのことがわかりません(速度は通常私の目的にとっては問題ではありません)、私はBSがページをロードせずにページソースを得ることができなかったことを認識しませんでした。申し訳ありませんが、私は助けることができませんでしたが、それは通知のためのきれいな機能のおかげです! – BLang

関連する問題