メインコンテンツへスキップ

HTML::LinkExtractor - 指定したサイトの外部リンクおよび内部リンク用スクレイパー

スクレイパーの概要

スクレイパーの概要HTML::LinkExtractorHTML::LinkExtractor – 指定されたサイトから外部および内部リンクを抽出するスクレイパーです。マルチページスクレイピングと、指定した深さまでのサイト内ページ遷移をサポートしており、サイトの全ページを巡回して内部および外部リンクを収集できます。内蔵の CloudFlare 回避機能や、スクリプトでデータが読み込まれるページからリンクを抽出するためのエンジンとして Chrome を選択する機能も備えています。最大で 2000 リクエスト/分の速度を出すことができ、これは 1時間あたり 120,000 リンクに相当します。

スクレイパーの活用事例

サイトからすべての外部リンクを収集する
  1. Parse to level (指定レベルまでスクレイピング) オプションを追加し、リストから 10 (10階層目までの隣接ページへの遷移) を選択します。
  2. Result format オプションを追加し、値として $extlinks.format('$link\n') (外部リンクの出力) を指定します。
  3. Queries (クエリ) セクションで、Unique queries オプションにチェックを入れます。
  4. Results (結果) セクションで、Unique string オプションにチェックを入れます。
  5. クエリとして、外部リンクをスクレイピングしたいサイトのURLを指定します。
サンプルをダウンロード

A-Parserにサンプルをインポートする方法

eJxtU01v2zAM/S9CgK5AlrSHXnxLgwZb4dZdm57SHISYztTIoirRWQrD/32U7NjJ
1ptIvsfHL9WCpN/5JwceyItkVQsb3yIRORSy0iTGwkrnwYXwSvxYPqRJkiqzuzuQ
kxtCx4geWwv6tMBstKTQeI6pnM2YIoU9aPbspa4Yc33VnOD34JzK4Ugo0JWSuJa2
hI4iRnAgzeJ+0gK+XYyC+fZmLi5Fs16PRUvxixgODHs96Xrqgy9yD0sMKkrD4F6w
9SjLqJNLghA96lxO6BAyyDxXoTOpW4UwlUH11aiPWKcnp8yW8Ww6BX7hsGQ3QUwS
nJ/HCldiFG3BaarI/9VyREKugrHwXO1Cci15Hyik9hxRBE7yBrJu2Ekt0My0joMe
YDH9baV0zlucFUz62RG/hmT/5Wj6Dk+leGV/HNfQZ4nWbfYwsHJMccuNG+S2tSoV
se3nWJmwmyt27gBsP7bHACvRQS/TZe7U+VAtmHAfw9ZmdnCdtXG2mXPnBk2htll3
c0dkZZb8GzIzx9JqCH2ZSmveiofn4UJmvltDMIYC/yXPo8TZPyJE7e9f2lKtU3yB
N6HAkid5qtql3EitX5/T04gYLoqN30Q2mU7ld4ueFzpRpsCpCESCLfJFcVvNuv+/
/S+vv/zFSd3wwt79U4sO3QUs+3hMnrfBP7b5C6wbebo=

最初のケースと同様ですが、ステップ2で値として $intlinks.format('$link\n') (内部リンクの出力) を指定する必要があります。

サンプルをダウンロード

A-Parserにサンプルをインポートする方法

eJxtU8tu2zAQ/BfCQBrAtZNDL7o5Roy2cOI0j5PjA2GtXNYUyZIrN4Ggf++QkiW7
zY27O7OzL9aCZdiHB0+BOIhsXQuX3iITORWy0izGwkkfyMfwWnx9vltm2VKZ/e0b
e7ll64HosbXgd0dgW8fKmoCYymGmFEs6kIbnIHUFzPVVc4I/kPcqpyOhsL6UjFra
EjqKGCnDGuJh0gI+XYyi+fpqLi5Fs9mMRUsJixSODHc96Xrqg0/yQM82qihNg3sB
616WSSeXTDF61Lmc8FvMIPNcxc6kbhXiVAbVF6N+pzoDe2V2wMP0isLC2xJuppQk
Ot+PFa7FKNkCaarE/9FyRMa+orEIqHYhUUveBwqpAyKKyUtsYNUNO6uFNTOt06AH
WEp/UymdY4uzAqRvHfFjyOq/HE3f4akUVvbHo4Y+S7JuVncDK7dLu0PjxqJtrUrF
sMPcVibu5grOPZHrx3YfYaX11Mt0mTt1HKojE+9j2NrMDa6zNs42c+7cWlOo3aq7
uSOyMs/4DSszt6XTFPsyldbYSqDH4UJmoVtDNIYC/yXPk8TZP2Jrdfj+1JbqvMIF
fokFlpjkqWqXciu1fnlcnkbEcFEwfjK7bDqVn50NWOhEmcJORSQy7SwuCm01m/7/
9r+8/vAXZ3WDhf0KDy06dhex8GFMAdvAj23+ApcrebQ=
「forum」という単語を含まないリンクのみを辿る
  1. Parse to level (指定レベルまでスクレイピング) オプションを追加し、リストから 3 (3階層目までの隣接ページへの遷移) を選択します。
  2. Result format オプションを追加し、値として $query を指定します。
  3. フィルタを追加します。$followlinks.$i.link - Link でフィルタリングし、タイプは Not contain string を選択し、文字列として forum を指定します。
  4. Queries (クエリ) セクションで、Unique queries オプションにチェックを入れます。
  5. Results (結果) セクションで、Unique string オプションにチェックを入れます。
  6. クエリとして、リンクをスクレイピングしたいサイトのURLを指定します。
サンプルをダウンロード

A-Parserにサンプルを開く方法

eJxtVE1v2zAM/S/CDhuQJS2GXXxLgwbd4DZdm57SHISYzrTIkipRaQvD/33UR2xn
6ykh+R75+CG3DLk7uHsLDtCxYtMyE/+zglVQcy+RTZjh1oEN4Q27Wd+WRVEKdbh+
Q8t3qC0hemzL8N0AsbVBoZWjmKjIjClKOIIkz5FLT5hv3Qh+BGtFBSd8rW3DkaQk
BZnBPr14sO/Pz4qNuLWQCEFFhhcbokupXyWpDArCL9tOMnCdWErjTivkQo3yU1nf
kJ3Uk8MB9dBtt6fkbhmFBSnmcppn1Qcf+RHWOkmCwb0k6443sYGKI4ToNHX4+csU
30IGXlUi1OQyVQjTHqo+KfESBTq0Qu0JHwYhwC2tbsiNEJPE6ZwUbvK0Quc+8n8l
DivQepgwR2qXnLRUfaDm0lFE0Jg4bXaVl1i0TKu5lHGBAyymv/JCVnQd85pIPzLx
Y8jqvxxd3+G4FN3CqyUNfZZoXa1uB1alS72PW4z7bQSS7Rbaq7CbC3IeAEw/trsA
a7SFvkzOnKvTAzCgwuENW5ubwXXWxtlmzp10UbXYr/Ixn5BeremVrdRCN0ZC6Et5
KWkrDh6GC5m7vIZgDAL/JS9iibP3iVpL9/MxSTVW0AV+DwIbmuS4ak6541I+PZTj
CBsuiozfiKaYzfjX9PCnO93MWOAh7DUdFHXVbfvPQv/xaD/8OBRtR/v64+4TOjQX
sOSjKbn4yi67v8azl7c=

収集されるデータ

  • 外部リンク数
  • 内部リンク数
  • 外部リンク:
    • リンク自体
    • アンカーテキスト
    • HTMLタグを除去したアンカーテキスト
    • nofollowパラメータ
    • <a> タグ全体
  • 内部リンク:
    • リンク自体
    • アンカーテキスト
    • HTMLタグを除去したアンカーテキスト
    • nofollowパラメータ
    • <a> タグ全体
  • 収集されたすべてのページの配列 (Use Pages オプション使用時に利用)

機能

  • マルチページスクレイピング(ページ遷移)
  • 指定した深さまでのサイト内ページ遷移(Parse to levelオプション) – サイトの全ページを巡回し、内部および外部リンクを収集可能
  • ページ遷移制限(Follow links limitオプション)
  • アンカーテキストからのHTMLタグ自動除去
  • 各リンクのnofollow判定
  • サブドメインを内部ページとして扱うかどうかの指定
  • gzip/deflate/brotli 圧縮をサポート
  • サイトの文字コードを判定し UTF-8 に変換
  • CloudFlare保護の回避
  • エンジンの選択(HTTPまたはChrome)

ユースケース

  • 完全なサイトマップの取得(すべての内部リンクの保存)
  • サイトからのすべての外部リンクの取得
  • 自サイトへのバックリンクの確認

クエリ

クエリには、リンクを収集したいページのURL、または Parse to level オプションを使用する場合はエントリポイント(例:サイトのトップページ)を指定する必要があります:

https://lenta.ru/
https://a-parser.com/wiki/index/

結果出力例

A-Parserは内蔵のテンプレートエンジン Template Toolkit により柔軟な結果フォーマットをサポートしており、任意の形式やCSV、JSONなどの構造化データで結果を出力できます。

結果フォーマット:

External links: $extcount\n$extlinks.format('$link\n')
Internal links: $intcount\n$intlinks.format('$link\n')

結果の例:

External links: 12
https://www.youtube.com/c/AParser_channel
https://t.me/a_parser
https://en.a-parser.com/
https://spyserp.com/ru/
https://sitechecker.pro/
https://arsenkin.ru/tools/
https://spyserp.com/
http://www.promkaskad.ru/
https://www.youtube.com/channel/UCvypGICrfCky8tPtebmIvQw
https://www.facebook.com/AParserRu
https://twitter.com/a_parser
https://www.youtube.com/c/AParser_channel

Internal links: 129
https://a-parser.com/
https://a-parser.com/
https://a-parser.com/a-parser-for-seo/
https://a-parser.com/a-parser-for-business-and-freelancers/
https://a-parser.com/a-parser-for-developers/
https://a-parser.com/a-parser-for-marketing-and-analytics/
https://a-parser.com/a-parser-for-e-commerce/
https://a-parser.com/a-parser-for-cpa/
https://a-parser.com/wiki/features-and-benefits/
https://a-parser.com/wiki/parsers/

設定可能な項目

パラメータ名デフォルト値説明
Good statusAllサーバーからのどのレスポンスを成功とみなすかを選択します。スクレイピング中にサーバーから別のレスポンスがあった場合、別のプロキシでリクエストが再試行されます
Good code RegExレスポンスコードをチェックするための正規表現を指定できます
Ban Proxy Code RegExサーバーのレスポンスコードに基づいて、プロキシを一定時間(Proxy ban time)禁止できます
MethodGETリクエストメソッド
POST bodyPOSTメソッド使用時にサーバーに送信するコンテンツ。変数 $query(リクエストURL)、$query.orig(元のクエリ)、および Use Pages オプション使用時の $pagenum(ページ番号)をサポートします。
Cookiesリクエストに使用するCookieを指定できます。
User agent_最新バージョンのChromeのUser-Agentが自動的に設定されます_ページリクエスト時の User-Agent ヘッダー
Additional headersテンプレートエンジンの機能やクエリコンストラクタの変数を使用して、任意の形式のリクエストヘッダーを指定できます
Read only headersヘッダーのみを読み取ります。コンテンツを処理する必要がない場合、トラフィックを節約できます
Detect charset on contentページの内容に基づいて文字コードを認識します
Emulate browser headersブラウザのヘッダーをエミュレートします
Max redirects count0スクレイパーが追跡するリダイレクトの最大数
Follow common redirectsMax redirects count の制限を回避して、同一ドメイン内での http <-> https および www.domain <-> domain のリダイレクトを許可します
Max cookies count16保存するCookieの最大数
EngineHTTP (Fast, JavaScript Disabled)HTTPエンジン(高速、JavaScriptなし)またはChromeエンジン(低速、JavaScript有効)を選択できます
Chrome Headlessこのオプションが有効な場合、ブラウザは表示されません
Chrome DevToolsChromiumのデバッグツールを使用できます
Chrome Log Proxy connectionsこのオプションが有効な場合、Chromeの接続に関する情報がログに出力されます
Chrome Wait Untilnetworkidle2ページがいつ読み込まれたとみなすかを定義します。値の詳細。
Use HTTP/2 transportHTTP/1.1の代わりにHTTP/2を使用するかどうかを決定します。例えば、GoogleやMajesticはHTTP/1.1を使用すると即座に禁止されます。
Don't verify TLS certsTLS証明書の検証を無効にします
Randomize TLS Fingerprintこのオプションにより、TLSフィンガープリントによるサイトの禁止を回避できます
Bypass CloudFlareCloudFlareのチェックを自動的に回避します
Bypass CloudFlare with Chrome(Experimental)Chrome経由でCFを回避します
Bypass CloudFlare with Chrome Max Pages20Chrome経由でCFを回避する際の最大ページ数
Subdomains are internalサブドメインを内部リンクとしてカウントするかどうか
Follow linksInternal onlyどのリンクを辿るか
Follow links limit0Follow linksの制限。各ユニークドメインに適用されます
Skip comment blocksコメントブロックをスキップするかどうか