Scrapy
latest

入門

  • Scrapyを3行で説明シル
  • インストール ガイド
  • Scrapyチュートリアル
  • 例

基本の概念

  • コマンドラインツール
  • スパイダー
  • セレクター
  • アイテム
  • アイテム・ローダー
  • Scrapyシェル
  • アイテム・パイプライン
  • フィード・エクスポート
  • リクエストとレスポンス
  • リンク抽出器(extractor)
    • 組み込みリンク抽出器リファレンス
      • LxmlLinkExtractor
  • 設定
  • 例外(Exceptions)

組み込み済サービス群

  • ロギング(logging)
  • 統計をとる
  • 電子メールの送信
  • Telnetコンソール
  • Webサービス

特定の問題の解決

  • F.A.Q.(よくある質問と回答)
  • スパイダーのデバッグ
  • スパイダー コントラクト
  • よくある例
  • 広範なクロール
  • Webブラウザの開発ツールを使ってスクレイピングする
  • 動的に読み込まれたコンテンツの選択
  • メモリ・リークのデバッグ
  • ファイルと画像のダウンロードおよび処理
  • スパイダーのデプロイ
  • AutoThrottle拡張機能
  • ベンチマーキング
  • ジョブ制御: クロールの一時停止と再開

Scrapyの拡張

  • アーキテクチャ概観
  • ダウンローダー・ミドルウェア
  • スパイダー・ミドルウェア
  • 拡張機能
  • コアAPI
  • シグナル
  • アイテム・エクスポーター

その他すべて

  • リリース・ノート
  • Scrapyへの貢献
  • バージョン管理とAPIの安定性
Scrapy
  • Docs »
  • リンク抽出器(extractor)
  • Edit on GitHub

リンク抽出器(extractor)¶

リンク抽出器(link extractor)は、最終的に追跡されるWebページ( scrapy.http.Response オブジェクト)からリンクを抽出することを唯一の目的とするオブジェクトです。

Scrapyには scrapy.linkextractors.LinkExtractor がありますが、シンプルなインターフェースを実装することで、ニーズに合わせて独自のカスタム・リンク抽出器を作成できます。

すべてのリンク抽出器が持つ唯一のパブリック・メソッドは extract_links で、これは Response オブジェクトを受け取り、 scrapy.link.Link オブジェクトのリストを返します。リンク抽出器は一度インスタンス化され、それらの extract_links メソッドが異なるレスポンスで数回呼び出されて、追跡するリンクを抽出します。

リンク抽出器は、(Scrapyに用意されている) CrawlSpider クラスで一連のルールを介して使用されますが、 CrawlSpider サブクラスを作成しなくても、スパイダーでも使用できます。

組み込みリンク抽出器リファレンス¶

Scrapyに同梱されているリンク抽出器クラスは、 scrapy.linkextractors モジュールで提供されます。

デフォルトのリンク抽出器は LinkExtractor で、これは LxmlLinkExtractor と同じです:

from scrapy.linkextractors import LinkExtractor

以前のScrapyバージョンには他のリンク抽出器クラスがありましたが、現在は廃止されています。

LxmlLinkExtractor¶

class scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), restrict_css=(), tags=('a', 'area'), attrs=('href', ), canonicalize=False, unique=True, process_value=None, strip=True)¶

LxmlLinkExtractorは、便利なフィルタリングオプションを備えた、おすすめのリンク抽出器です。lxmlの堅牢なHTMLParserを使用して実装されています。

パラメータ
  • allow (a regular expression (or list of)) -- (絶対)URLが抽出されるために一致する必要がある単一の正規表現(または正規表現のリスト)。指定しない場合(または空の場合)は、すべてのリンクに一致します。

  • deny (a regular expression (or list of)) -- (絶対)URLが除外される(抽出されない)ために一致する必要がある単一の正規表現(または正規表現のリスト)。 allow パラメータよりも優先されます。指定されていない(または空の)場合、リンクは除外されません。

  • allow_domains (str or list) -- リンクを抽出するために考慮されるドメインを含む単一の値または文字列のリスト

  • deny_domains (str or list) -- リンクを抽出するために 考慮されない ドメインを含む単一の値または文字列のリスト

  • deny_extensions (list) -- リンクを抽出するときに無視される拡張子を含む単一の値または文字列のリスト。 指定しない場合、 scrapy.linkextractors パッケージで定義された IGNORED_EXTENSIONS リストがデフォルトになります。

  • restrict_xpaths (str or list) -- これは、リンクを抽出するレスポンス内の領域を定義するXPath(またはXPathのリスト)です。指定すると、それらのXPathによって選択されたテキストのみがリンクをスキャンされます。以下の例を参照してください。

  • restrict_css (str or list) -- リンクを抽出するレスポンス内の領域を定義するCSSセレクター(またはセレクターのリスト)。 restrict_xpaths と同じ動作をします。

  • restrict_text (a regular expression (or list of)) -- リンクのテキストが抽出されるために一致する必要がある単一の正規表現(または正規表現のリスト)。指定しない場合(または空の場合)は、すべてのリンクに一致します。正規表現のリストが指定されている場合、リンクが少なくとも1つと一致するとリンクが抽出されます。

  • tags (str or list) -- リンクを抽出するときに考慮するタグまたはタグのリスト。 デフォルトは ('a', 'area') です。

  • attrs (list) -- 抽出するリンクを探すときに考慮する必要がある属性または属性のリスト( tags パラメータで指定されたタグのみ)。デフォルトは ('href',)

  • canonicalize (boolean) -- 抽出された各URLを正規化します(w3lib.url.canonicalize_urlを使用)。 デフォルトは False です。canonicalize_urlは重複チェックを目的としていることに注意してください。サーバー側で表示されるURLを変更できるため、正規化されたURLと生のURLを使用したリクエストのレスポンスが異なる場合があります。LinkExtractorを使用してリンクをたどっている場合、デフォルトの canonicalize=False のままにしておいた方がより堅牢です。

  • unique (boolean) -- 抽出されたリンクに重複フィルタリングを適用するかどうか。

  • process_value (callable) --

    タグから抽出された各値とスキャンされた属性を受け取り、値を変更して新しい値を返すか、リンクを完全に無視するために None を返すことができる関数。 指定しない場合、 process_value のデフォルトは lambda x: x になります。

    たとえば、このコードからリンクを抽出するには:

    <a href="javascript:goToPage('../other/page.html'); return false">Link text</a>
    

    あなたは process_value で次の関数を使用できます:

    def process_value(value):
        m = re.search("javascript:goToPage\('(.*?)'", value)
        if m:
            return m.group(1)
    

  • strip (boolean) -- 抽出された属性から空白を削除するかどうか。HTML5標準によれば、先頭と末尾の空白は、<a> や <area> の href 属性や他の多くの要素、 <img> や <iframe> の src 属性、などから削除する必要があります。そのためLinkExtractorはデフォルトでスペース文字を削除します。オフにするには strip=False を設定します(たとえば、先頭または末尾の空白を許可する要素または属性からURLを抽出する場合)。

Next Previous

© Copyright 2008–2018, Scrapy developers Revision a8134fa2.

Built with Sphinx using a theme provided by Read the Docs.