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
また、それを設定するためのいくつかの素晴らしいビデオがあり、そのためにYouTubeに見て、クロムのドライバーをダウンロードする必要があります! – BLang
コメントありがとうございます。私はまた、いくつかの他のタスクでセレンを使用しています。しかし、私が考えるこの欠点は、ソースコードを取得する前にロードするページを待たなければならないため、プロセスが大幅に遅くなることです。だから私は通常、Web廃棄でBeautifulsoupを使用しています。それとも私は何かが欠けていますか?これは、ページを完全にロードせずにページソースコードを取得することによってセレンを使用する方法ですか? –
ええ、私はセレンの点ではそのことがわかりません(速度は通常私の目的にとっては問題ではありません)、私はBSがページをロードせずにページソースを得ることができなかったことを認識しませんでした。申し訳ありませんが、私は助けることができませんでしたが、それは通知のためのきれいな機能のおかげです! – BLang