Scrapy-リンクエクストラクター
説明
名前自体が示すように、リンクエクストラクタは、を使用してWebページからリンクを抽出するために使用されるオブジェクトです。 scrapy.http.Responseオブジェクト。Scrapyには、次のような組み込みの抽出機能があります。scrapy.linkextractors インポート LinkExtractor。シンプルなインターフェイスを実装することで、必要に応じて独自のリンクエクストラクタをカスタマイズできます。
すべてのリンクエクストラクタには、と呼ばれるパブリックメソッドがあります extract_linksこれにはResponseオブジェクトが含まれ、scrapy.link.Linkオブジェクトのリストが返されます。リンクエクストラクタを1回だけインスタンス化し、extract_linksメソッドを何度も呼び出して、異なる応答を持つリンクを抽出できます。CrawlSpiderclassは、リンクを抽出することを主な目的とする一連のルールを持つリンク抽出機能を使用します。
組み込みのリンクエクストラクタのリファレンス
通常、リンクエクストラクタはScrapyとグループ化され、scrapy.linkextractorsモジュールで提供されます。デフォルトでは、リンクエクストラクタはLinkExtractorになります。これは、LxmlLinkExtractorと機能が同じです。
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 = True, unique = True, process_value = None)
LxmlLinkExtractorはそれが便利なフィルタリングオプションを持っており、それがlxmlのの堅牢なHTMLParserで使用されているので、強くお勧めリンク抽出です。
シニア番号 | パラメータと説明 |
---|---|
1 | allow (正規表現(またはのリスト)) これにより、抽出されるURLと一致する必要がある単一の式または式のグループが許可されます。記載されていない場合は、すべてのリンクに一致します。 |
2 | deny (正規表現(またはのリスト)) 抽出されないURLと一致する必要がある単一の式または式のグループをブロックまたは除外します。言及されていないか、空のままになっている場合、不要なリンクは削除されません。 |
3 | allow_domains (strまたはlist) これにより、リンクの抽出元のドメインに一致する単一の文字列または文字列のリストが許可されます。 |
4 | deny_domains (strまたはlist) リンクが抽出されないドメインに一致する必要がある単一の文字列または文字列のリストをブロックまたは除外します。 |
5 | deny_extensions (リスト) リンクを抽出するときに、拡張子が付いた文字列のリストをブロックします。設定されていない場合、デフォルトでは、scrapy.linkextractorsパッケージに事前定義されたリストを含むIGNORED_EXTENSIONSに設定されます。 |
6 | restrict_xpaths (strまたはlist) これは、応答からリンクが抽出されるXPathリスト領域です。指定した場合、リンクはXPathによって選択されたテキストからのみ抽出されます。 |
7 | restrict_css (strまたはlist) これは、応答内のCSSで選択された領域からリンクを抽出するrestrict_xpathsパラメーターと同様に動作します。 |
8 | tags (strまたはlist) リンクを抽出するときに考慮する必要がある単一のタグまたはタグのリスト。デフォルトでは、( 'a'、 'area')になります。 |
9 | attrs (リスト) リンクを抽出するときは、単一の属性または属性のリストを考慮する必要があります。デフォルトでは、( 'href'、)になります。 |
10 | canonicalize (ブール値) 抽出されたURLは、scrapy.utils.url.canonicalize_urlを使用して標準形式になります。デフォルトでは、Trueになります。 |
11 | unique (ブール値) 抽出されたリンクが繰り返される場合に使用されます。 |
12 | process_value (呼び出し可能) スキャンしたタグや属性から値を受け取る関数です。受信した値は変更されて返される場合があります。そうでない場合、リンクを拒否するために何も返されません。使用しない場合、デフォルトではラムダx:xになります。 |
例
次のコードは、リンクを抽出するために使用されます-
<a href = "javascript:goToPage('../other/page.html'); return false">Link text</a>
次のコード関数はprocess_valueで使用できます-
def process_value(val):
m = re.search("javascript:goToPage\('(.*?)'", val)
if m:
return m.group(1)