PythonにはJavaScriptサポートを提供するスクリーンスクレイピングライブラリがありますか?
私は単純なHTMLリクエストにはpycurlを使用し、JavaScriptサポートを必要とするより複雑なリクエストにはJavaのHtmlUnitを使用しています。
理想的には、Pythonからすべてを実行できるようにしたいのですが、それを実行できるライブラリはありません。それらは存在しますか?
PythonにはJavaScriptサポートを提供するスクリーンスクレイピングライブラリがありますか?
私は単純なHTMLリクエストにはpycurlを使用し、JavaScriptサポートを必要とするより複雑なリクエストにはJavaのHtmlUnitを使用しています。
理想的には、Pythonからすべてを実行できるようにしたいのですが、それを実行できるライブラリはありません。それらは存在しますか?
静的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
美しいスープはまだおそらくあなたの最善の策です。
Ajaxリクエストをインターセプトする目的で「JavaScriptサポート」が必要な場合は、何らかのキャプチャ(YATTなど)を使用してそれらのリクエストが何であるかを監視し、それらをエミュレート/解析する必要があります。
静的JavaScriptを使用したページの最終結果を確認するために「JavaScriptサポート」が必要な場合、私の最初の選択肢は、JavaScriptがケースバイケースで何をしているのかを理解することです。 (たとえば、JavaScriptがXmlに基づいて何かを実行している場合は、代わりにXmlを直接解析します)
「JavaScriptサポート」が本当に必要な場合(スクリプトがページで実行された後のhtmlを確認したい場合など)、ブラウザコントロールのインスタンスを作成して、結果のhtmlを読み取る必要があると思います。 /読み込みが完了したら、ブラウザコントロールから戻って、美しいスープで通常どおりに解析します。しかし、それが私の最後の手段になります。
Scrapyは、高速で高レベルの画面スクレイピングおよびWebクロールフレームワークであり、Webサイトをクロールし、ページから構造化データを抽出するために使用されます。データマイニングから監視、自動テストまで、幅広い目的に使用できます。
セレンかも?これにより、Python(他の言語の中でも)を使用して実際のブラウザー(Firefox、IE、Safari)を自動化できます。これはWebサイトのテスト用ですが、スクレイピングにも使用できるはずです。(免責事項:自分で使用したことはありません)
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')
あなたはスパイダーモンキーを試すことができますか?
このPythonモジュールはJavascriptの実装を可能にしますか?Pythonのクラス、オブジェクト、関数、およびJavascriptスクリプトと関数の評価と呼び出し。これは、ClaesJacobssenのJavascriptPerlモジュールを多用しています。このモジュールは、MozillaのPerlConnectPerlバインディングに基づいています。
私はこれについて何も見つけていません。私は美しいスープとカスタムルーチンの組み合わせを使用しています...