14

PythonにはJavaScriptサポートを提供するスクリーンスクレイピングライブラリがありますか?

私は単純なHTMLリクエストにはpycurlを使用し、JavaScriptサポートを必要とするより複雑なリクエストにはJavaのHtmlUnitを使用しています。

理想的には、Pythonからすべてを実行できるようにしたいのですが、それを実行できるライブラリはありません。それらは存在しますか?

4

7 に答える 7

13

静的HTMLを処理する場合、他の応答がカバーする多くのオプションがあります。ただし、JavaScriptのサポートが必要で、Pythonを使い続けたい場合は、webkitを使用してWebページ(JavaScriptを含む)をレンダリングしてから、結果のHTMLを調べることをお勧めします。例えば:

import sys
import signal
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebPage

class Render(QWebPage):
    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebPage.__init__(self)
        self.html = None
        signal.signal(signal.SIGINT, signal.SIG_DFL)
        self.connect(self, SIGNAL('loadFinished(bool)'), self._finished_loading)
        self.mainFrame().load(QUrl(url))
        self.app.exec_()

    def _finished_loading(self, result):
        self.html = self.mainFrame().toHtml()
        self.app.quit()


if __name__ == '__main__':
    try:
        url = sys.argv[1]
    except IndexError:
        print 'Usage: %s url' % sys.argv[0]
    else:
        javascript_html = Render(url).html
于 2010-02-06T23:08:19.667 に答える
11

美しいスープはまだおそらくあなたの最善の策です。

Ajaxリクエストをインターセプトする目的で「JavaScriptサポート」が必要な場合は、何らかのキャプチャ(YATTなど)を使用してそれらのリクエストが何であるかを監視し、それらをエミュレート/解析する必要があります。

静的JavaScriptを使用したページの最終結果を確認するために「JavaScriptサポート」が必要な場合、私の最初の選択肢は、JavaScriptがケースバイケースで何をしているのかを理解することです。 (たとえば、JavaScriptがXmlに基づいて何かを実行している場合は、代わりにXmlを直接解析します)

「JavaScriptサポート」が本当に必要な場合(スクリプトがページで実行された後のhtmlを確認したい場合など)、ブラウザコントロールのインスタンスを作成して、結果のhtmlを読み取る必要があると思います。 /読み込みが完了したら、ブラウザコントロールから戻って、美しいスープで通常どおりに解析します。しかし、それが私の最後の手段になります。

于 2010-02-03T08:38:18.663 に答える
4

Scrapyは、高速で高レベルの画面スクレイピングおよびWebクロールフレームワークであり、Webサイトをクロールし、ページから構造化データを抽出するために使用されます。データマイニングから監視、自動テストまで、幅広い目的に使用できます。

どうぞ:http ://scrapy.org/

于 2010-02-03T09:21:32.007 に答える
3

セレンかも?これにより、Python(他の言語の中でも)を使用して実際のブラウザー(Firefox、IE、Safari)を自動化できます。これはWebサイトのテスト用ですが、スクレイピングにも使用できるはずです。(免責事項:自分で使用したことはありません)

于 2011-09-16T07:47:27.527 に答える
1

Webscrapingライブラリは、 PyQt4WebViewをシンプルで使いやすいAPIにラップします。

WebKitによってレンダリングされたWebページをダウンロードし、XPath(上記のURLから取得)を使用してタイトル要素を抽出する簡単な例を次に示します。

from webscraping import download, xpath
D = download.Download()
# download and cache the Google Code webpage
html = D.get('http://code.google.com/p/webscraping')
# use xpath to extract the project title
print xpath.get(html, '//div[@id="pname"]/a/span')
于 2013-04-17T21:55:00.540 に答える
-1

あなたはスパイダーモンキーを試すことができますか?

このPythonモジュールはJavascriptの実装を可能にしますか?Pythonのクラス、オブジェクト、関数、およびJavascriptスクリプトと関数の評価と呼び出し。これは、ClaesJacobssenのJavascriptPerlモジュールを多用しています。このモジュールは、MozillaのPerlConnectPerlバインディングに基づいています。

于 2010-02-03T08:21:37.050 に答える
-2

私はこれについて何も見つけていません。私は美しいスープとカスタムルーチンの組み合わせを使用しています...

于 2010-02-03T08:14:48.750 に答える