GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

lorien

grab – Webスクレイピングフレームワーク

投稿日:

Webスクレイピングフレームワーク http://grablib.org

つかむ

グラブとは何ですか?

グラブは、PythonのWebスクレイピングフレームワークです。 グラブは、ネットワーク要求を実行し、ウェブサイトをスクラップし、スクレイプされたコンテンツを処理するための多くの有益な方法を提供します。

  • 自動クッキー(セッション)のサポート
  • 承認の有無によるHTTPとSOCKSプロキシ
  • キープアライブサポート
  • IDNサポート
  • Webフォームで作業するツール
  • 簡単なマルチパートファイルのアップロード
  • HTTPリクエストの柔軟なカスタマイズ
  • 自動文字セット検出
  • XPATHクエリを使用してHTML文書のDOMツリーからデータを抽出する強力なAPI
  • 非同期APIは何千もの同時クエリを作成します。 Spiderというライブラリのこの部分。 以下のスパイダーのリストをご覧ください。
  • Python 3 ready

スパイダーはウェブサイトスクレイパーを書くためのフレームワークです。 特徴:

  • リクエスト/解析ロジックを別々のコードブロックで整理するためのルールと規約
  • 複数の並列ネットワーク要求
  • ネットワークエラーの自動処理(失敗したタスクはタスクキューに戻ります)
  • Grab APIを使用してネットワーク要求を作成し、応答を解析することができます(上記参照)
  • HTTPプロキシサポート
  • ネットワークをキャッシュすると永続的なストレージになります
  • タスクキューの異なるバックエンド(インメモリ、redis、mongodb)
  • デバッグおよび統計収集ツール

グラブの例

import logging

from grab import Grab

logging.basicConfig(level=logging.DEBUG)

g = Grab()

g.go('https://github.com/login')
g.doc.set_input('login', '****')
g.doc.set_input('password', '****')
g.doc.submit()

g.doc.save('/tmp/x.html')

g.doc('//ul[@id="user-links"]//button[contains(@class, "signout")]').assert_exists()

home_url = g.doc('//a[contains(@class, "header-nav-link name")]/@href').text()
repo_url = home_url + '?tab=repositories'

g.go(repo_url)

for elem in g.doc.select('//h3[@class="repo-list-name"]/a'):
    print('%s: %s' % (elem.text(),
                      g.make_url_absolute(elem.attr('href'))))

グラブ::スパイダーの例

import logging

from grab.spider import Spider, Task

logging.basicConfig(level=logging.DEBUG)


class ExampleSpider(Spider):
    def task_generator(self):
        for lang in 'python', 'ruby', 'perl':
            url = 'https://www.google.com/search?q=%s' % lang
            yield Task('search', url=url, lang=lang)

    def task_search(self, grab, task):
        print('%s: %s' % (task.lang,
                          grab.doc('//div[@class="s"]//cite').text()))


bot = ExampleSpider(thread_number=2)
bot.run()

インストール

$ pip install -U grab

さまざまなプラットフォームでのグラブのインストールの詳細はこちらhttp://docs.grablib.org/en/latest/usage/installation.html

ドキュメントとヘルプ

ドキュメント: http : //docs.grablib.org/ja/latest/

メーリングリスト(主にロシア語): http : //groups.google.com/group/python-grab/

貢献

バグを報告するには、GitHubの問題追跡ツールを使用してください: https : //github.com/lorien/grab/issues

グラブで新しい機能を開発したい場合は、課題トラッカーを使用して、あなたが何をしたいのかを記述してください。またはlorien@lorien.nameまでご連絡ください







-lorien
-, , , , , ,

執筆者: