Scrapy
latest

入門

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

基本の概念

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

組み込み済サービス群

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

特定の問題の解決

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

Scrapyの拡張

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

その他すべて

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

リンク抽出器(link extractors)¶

リンク抽出器(link extractor)は、レスポンスからリンクを抽出するオブジェクトです。

LxmlLinkExtractor の __init__ メソッドは、抽出されるリンクを決める設定を取得します。 LxmlLinkExtractor.extract_links は、 Response オブジェクトからマッチする Link オブジェクトのリストを返します。

リンク抽出器は、 Rule オブジェクトの組を介して CrawlSpider スパイダー群で使用されます。

あなたは、通常のスパイダーでリンク抽出器を使用することもできます。 たとえば、 LinkExtractor をスパイダーのクラス変数としてインスタンス化し、そしてそれをスパイダー・コールバックから使用します:

def parse(self, response):
    for link in self.link_extractor.extract_links(response):
        yield Request(link.url, callback=self.parse)

リンク抽出器リファレンス¶

リンク抽出器クラスは scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor です。 便宜上、 scrapy.linkextractors.LinkExtractor としてインポートすることもできます:

from scrapy.linkextractors import LinkExtractor

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 (str or list) -- (絶対)URLが抽出されるために一致する必要がある単一の正規表現(または正規表現のリスト)。指定しない場合(または空の場合)は、すべてのリンクに一致します。

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

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

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

  • deny_extensions (list) --

    リンクを抽出するときに無視する必要がある拡張子を含む単一の値または文字列のリスト。 指定しない場合、デフォルトで scrapy.linkextractors.IGNORED_EXTENSIONS になります。

    バージョン 2.0 で変更: IGNORED_EXTENSIONS は、現在は以下を含んでいます 7z 、 7zip 、 apk 、 bz2 、 cdr 、 dmg 、 ico 、 iso 、 tar 、 tar.gz 、 webm 、 xz

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

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

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

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

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

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

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

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

extract_links(response)[ソース]¶

指定された response から Link オブジェクトのリストを返します。

リンク抽出器の __init__ メソッドに渡された設定にマッチするリンクのみが返されます。

重複するリンクは省略されます。

Link¶

class scrapy.link.Link(url, text='', fragment='', nofollow=False)[ソース]¶

Linkオブジェクトは、LinkExtractorによって抽出されたリンクを表します。

以下のアンカー・タグの例にてパラメータを説明します:

<a href="https://example.com/nofollow.html#foo" rel="nofollow">Dont follow this one</a>
パラメータ
  • url -- アンカー・タグでリンクされている絶対URL。 例では、 https://example.com/nofollow.html の部分です。

  • text -- アンカー・タグのテキスト。 例では Dont follow this one の部分です。

  • fragment -- ハッシュ記号の後のURLの部分。 例では foo の部分です。

  • nofollow -- アンカー・タグの rel 属性にnofollow値が存在するかどうかを示します。

Next Previous

© Copyright 2008–2021, Scrapy developers. Revision d9cf5247. 最終更新: 7月 01, 2021

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