2

重複の可能性:
Pythonを使用してスクレーパーまたはボットを作成するにはどこから始めればよいですか?

明らかに可能だと思います...ウェブサイトにアクセスし、ログインし、一連のリンクにアクセスし、検索フォームに日付入力を入力してXLSファイルを取得し、ログオフする、ある種のロボットを実装するように依頼されました。手動で行う場合、この試練全体はほぼ1時間かかるため、スクリプト/ロボットを使用すると時間を大幅に節約できます。

アイデア?図書館?urllibが必要になると思いますか?
それとも、Pythonをまったく使用しないのでしょうか?
前もって感謝します!

編集:私は「pythoncrawler」をかなり検索しましたが、コメントの直前までMechanizeまたはScrapyに出くわしませんでした:/
最初にMechanizeについて詳しく調べます。ありがとう。

4

2 に答える 2

3

私はツイルPythonモジュールのファンです。これは、基本的なブラウジングとスクレイピングを行うために少し前に使用したコードの小さなサンプルです。

import twill
import twill.commands as c

def login():
    c.clear_cookies()
    c.go('http://icfpcontest.org/icfp10/login')
    c.fv(1, 'j_username', 'Side Effects May Include...')
    c.fv(1, 'j_password', '<redacted>')
    c.submit()
    c.save_cookies('/tmp/icfp.cookie')

all_cars_rx = re.compile(r'<td style="width: 20%;">(\d+)</td><td>(\d+)</td>')
def list_cars():
    c.go('http://icfpcontest.org/icfp10/score/instanceTeamCount')
    cars = re.findall(all_cars_rx, c.show())
    if not cars:
        sys.stderr.write(c.show())
        sys.stderr.write('Could not find any cars')
    return cars;

HTMLを解析するために正規表現を使用するべきではないことに言及する価値があります。ここにあるのは、非常に短いタイムテーブルでICFPに対して行われたダーティハックです。

于 2011-04-04T20:58:32.837 に答える
0

最近、私はPhantomJSを発見し、同様のタスクに使用しました。これは、完全に機能するWebkitエンジンが組み込まれたコマンドラインJavaScriptインタープリターです。私見ですが、これはあなたのようなタスクに非常に使いやすいツールであり、Firebugで言うようなあらゆる種類のスクリプト可能な機能を備えています。また、スクリーンショットを撮り、それらを画像ファイルに保存するための組み込みの呼び出しがあります。

于 2011-04-04T22:16:28.550 に答える