cURLとは何か、スクレイピングへの活用法について

cURLは、プログラマーがデータ収集やデータ転送に使用する汎用的なコマンドです。しかし、cURLをどのようにウェブスクレイピングに活用できるのでしょうか?この記事を参考に、始めてみてください。
1 分読
data collection and web scraping with cURL

このブログ記事では次を習得できます。

  • cURLとは?
  • cURLの使い方
  • cURLがよく使われる理由
  • プロキシでcURLを使う
  • User-Agentの変更方法
  • cURLを使ったウェブスクレイピング

cURLとは?

cURLは、ネットワークプロトコルを介してデータを転送するために使用するコマンドラインツールです。cURL は「Client URL」の略で、「curl」とも表記されます。URL構文を使ってサーバーとのデータ転送を行う一般的なコマンドです。Curl は、無料で使いやすいクライアントサイドのURL転送ライブラリである「libcurl」で稼働します。

curlを使うと有利になる理由は?

このコマンドの汎用性により、curlは次のような様々なユースケースで使用できます。

  • ユーザー認証
  • HTTP投稿
  • SSL接続
  • プロキシ対応
  • FTPアップロード

curlの最も簡単な「使用例」は、サポートされているプロトコルの1つを使用してウェブサイト全体をダウンロードおよびアップロードすることです。

Curlプロトコル

curlには、サポートされるプロトコルの長いリストがありますが、特定のプロトコルが提供されない場合、デフォルトでHTTPを使用します。対応プロトコルの一覧はこちらです。

cURL command - list of supported protocols - dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, stmp, rtsp, scp, sftp, smb, sms, telnet, tftp

curlのインストール

Linuxディストリビューションでは、curlコマンドがデフォルトでインストールされています。

curlがすでにインストールされているかどうかを確認するには?

1.Linuxのコンソールを開きます。

2.「curl」と入力し、「Enter」キーを押します。

3.すでにcurlがインストールされている場合は、次のようなメッセージが表示されます。

terminal window cURL try -help -manual commands

4.curlがまだインストールされていない場合は、次のようなメッセージが表示されます。「command not found(コマンドが見つかりません)」その後、ディストリビューションパッケージに変わり、インストールできるようになります(詳細は後述)。

cURLの使い方

Curlの構文は次のように非常に単純です。

command line Curl options url

例えば、ウェブページwebpage.comをダウンロードしたい場合は、そのまま実行します。

curl command line webpage.com

このコマンドを実行すると、ターミナルのウィンドウにそのページのソースコードが表示されます。プロトコルを指定しない場合、curlではHTTPがデフォルトとされます。以下に、特定のプロトコルを定義する方法の例を示します。

ftp cURL command line syntax

://を付け忘れた場合、curlは使いたいプロトコルを推測します。

コマンドの基本的な使い方について簡単に説明しましたが、curlのドキュメントサイトにオプションの一覧があります。これらのオプションは、URLで実行可能なアクションです。オプションを選択すると、リストアップしたURLでどのようなアクションを起こすかをcurlに指示します。URLは、このアクションを実行する必要がある場所をcURLに伝えます。そして、cURLでは、1つまたは複数のURLをリストアップできます。

複数のURLをダウンロードする場合は、それぞれのURLの前に-0をつけ、その後にスペースを入れてください。一行で行うこともできますし、URLごとに分けて書くこともできます。また、ページをリストアップしてURLの一部をダウンロードすることもできます。例:

curl command line for multiple pages on website

 ダウンロードを保存する

curlを使用すると、2種類の方法でURLのコンテンツをファイルに保存できます。

1.-o メソッド:URLが保存されるファイル名を追加できます。このオプションは次のような構成になっています。

Command line CURL filename

2.-O メソッド:ここでは、このオプションによってURL名でファイルを保存できるので、ファイル名を追加する必要はありません。このオプションを使用するには、URLの前に-Oを付けるだけです。

ダウンロードの再開

ダウンロードが途中で止まってしまう場合があります。この場合、コマンドの先頭に -C オプションを追加して次のように書き換えてください。

curl filename as URL

cURLが良く使われる理由

Curlは、複雑な操作のために作られた、まさに「アーミーナイフ」のようなコマンドです。しかし、「wget」や「Kurly」など、もっと単純な作業に適した代替手段もあります。

Curlは、ほぼすべてのプラットフォームで利用可能なため、開発者の間で人気があります。デフォルトでインストールされていることもあります。つまり、実行しているプログラムやジョブが何であれ、curlコマンドは動作するはずです。

また、お使いのOSが10年未満であれば、Curlがインストールされている可能性があります。また、ブラウザでドキュメントを読み、curlのドキュメントを参照することもできます。最近のバージョンのWindowsをお使いの方は、すでにCurlがインストールされていることでしょう。そうでない場合は、Stack Overflowのこの投稿をチェックして、その方法を習得しましょう。

プロキシでcURLを使う

cURLとプロキシを併用することを好む人もいるかもしれません。その場合の利点は以下の通りです。

 

  1. さまざまな地理的位置からのデータ要求をうまく管理する能力が向上します。

     

  2. 同時に実行できる並列データジョブの数が指数関数的に増加します。

これを実現するため、cURLにすでに組み込まれている「-x」と「(- – proxy)」機能を利用できます。以下は、使用しているプロキシをcURLと統合するために使用可能なコマンドラインの例です。

$ curl -x 026.930.77.2:6666 http://linux.com/

上記のコードスニペットでは、「6666」はポート番号のプレースホルダで、「026.930.77.2」はIPアドレスです。

知っておくとよいこと:cUrlは、HTTP、HTTPS、SOCKSなど、現在使われている一般的なプロキシタイプのほとんどと互換性があります。

 

User-Agentの変更方法

User-Agentは、情報を要求しているデバイスをターゲットサイトが識別可能にする特性のことです。ターゲットサイトは、求められたターゲットデータを返す前に、要求者が特定の基準を満たすことを要求する場合があります。これは、デバイスの種類、オペレーティングシステム、または使用されているブラウザに関連したものである可能性があります。このシナリオでは、データを収集する主体は、ターゲットサイトの理想的な「候補者」を模倣したいと考えています。

例えば、ターゲットとしているサイトが、リクエストを行う当事者の使用するブラウザがChromeであることを「好む」としましょう。cURLを使って目的のデータセットを取得するには、次のようにこの「ブラウザの特徴」をエミュレートする必要があります。

curl -A “Goggle/9.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Chrome/103.0.5060.71” https://getfedora.org/

cURLを使ったウェブスクレイピング

プロからのアドバイス:ウェブサイトの規則を尊重しましょう。一般に、パスワードで保護されたコンテンツにアクセスすることは、違法行為とみなされる場合がありますので、絶対におやめください。

ウェブスクレイピングを行う際に、curlを使用して繰り返し処理を自動化することで、面倒な作業を回避することができます。そのためには、PHPを使用する必要があります。以下は GitHubで見つけた例です。

web scraping script in php using curl

curlを使ってウェブページをスクレイピングする場合、次の3つのオプションを使用する必要があります。

  • curl_init($url) -> セッションの初期化
  • curl_exec() -> 実行
  • curl_close() -> 終了
code syntax for scraping a web page using curl

その他、使用すべきオプションは以下の通りです。

  • Curlopt_url -> スクレイピングしたいURLを設定
setting the URL you want to scrape with cURL
  • Curlopt_returntransfer -> スクレイピングされたページを変数として保存するようにcurlに指示します。(これにより、ページから抽出したかった情報を正確に取得できます。)
curl command line for saving scraped page as a variable

キーポイント

cURLは強力なウェブスクレイピングツールですが、データ収集だけでなくデータクリーニングにも企業の貴重な開発者の時間を必要とします。ここでBright Dataの出番です。Bright Dataは、主要なウェブデータプラットフォームであり、ウェブスクレイピングのニーズを支援するための幅広い製品を持っています。Bright Dataの製品には、開発者のニーズを考慮に入れて作られたWeb Scraper IDE、ウェブサイトのブロック解除の自動化が組み込まれた自動ブラウザ、スクレイピングよりも正確なデータを受け取りたい人向けのデータセットマーケットプレイス、そして7200万以上の信頼性の高いプロキシが含まれています。

 

どの製品を選ぶべきかわからないですか?販売部門に連絡して、あなたに適した解決策を見つけてください。

クレジットカードは必要ありません

あなたは下記にもご興味がおありかもしれません

Building AI-Ready Vector Datasets for LLMs blog image
AI

LLMのためのAI対応ベクトルデータセット構築:Bright Data、Google Gemini、Pineconeを使ったガイド

大規模言語モデル(LLM)は、私たちが情報にアクセスし、インテリジェントなアプリケーションを構築する方法を変革しています。LLMの可能性を最大限に引き出すには、特にドメイン固有の知識や独自のデータを使用する場合、高品質で構造化されたベクトルデータセットを作成することが重要です。LLMの性能と精度は、入力データの品質に直接結びついています。準備不足のデータセットは劣悪な結果をもたらす可能性があり、一方、十分にキュレーションされたデータセットはLLMを真のドメイン・エキスパートに変えることができます。 このガイドでは、AIに対応したベクターデータセットを生成するための自動パイプラインの構築方法を順を追って説明する。 課題:LLMのためのデータ収集と準備 LLMは膨大な汎用テキストコーパスで学習されますが、商品関連のクエリへの回答、業界ニュースの分析、顧客フィードバックの解釈など、特定のタスクやドメインに適用すると、不足することがよくあります。LLMを真に役立てるには、ユースケースに合わせた高品質のデータが必要です。 このデータは通常、ウェブ上に分散していたり、複雑なサイト構造の背後に隠されていたり、ボット対策によって保護されていたりする。 当社の自動ワークフローは、データセット作成の最も困難な部分を処理する合理化されたパイプラインでこれを解決します: コア技術の概要 パイプラインを構築する前に、関連するコアテクノロジーと、それぞれがワークフローをどのようにサポートしているかを簡単に見ておこう。 ブライトデータスケーラブルなウェブデータ収集 AIに対応したベクターデータセットを作成するための最初のステップは、関連性のある高品質なソースデータを収集することです。ナレッジベースやドキュメンテーションのような内部システムから得られるものもあるが、大部分は公共のウェブから得られることが多い。 しかし、最近のウェブサイトは、CAPTCHA、IPレート制限、ブラウザフィンガープリントなどの高度なボット対策メカニズムを使用しているため、大規模なスクレイピングは困難である。 Bright Dataは、データ収集の複雑さを抽象化するWeb Unlocker APIでこの課題を解決します。プロキシのローテーション、CAPTCHAの解決、ブラウザのエミュレーションを自動的に処理するため、データへのアクセス方法ではなく、データに集中することができます。 Google Gemini: インテリジェント・コンテンツ・トランスフォーメーション Geminiは、Googleによって開発された強力なマルチモーダルAIモデルのファミリーであり、様々なタイプのコンテンツを理解し処理することに優れている。私たちのデータ抽出パイプラインにおいて、Geminiは3つの重要な機能を果たします: このAIを活用したアプローチは、特に以下のような使用例において、脆弱なCSSセレクタや壊れやすい正規表現に依存する従来の方法よりも大きな利点をもたらす: AIがデータ抽出プロセスにどのような変化をもたらしているかについては、Using AI for Web Scrapingをご覧ください。スクレイピングのワークフローにGeminiを実装するための実践的なチュートリアルをお探しの場合は、包括的なガイドをご覧ください:GeminiによるWebスクレイピングをご覧ください。 文の変形意味埋め込み文の生成 エンベッディングは、高次元空間におけるテキスト(または他のデータタイプ)の密なベクトル表現である。これらのベクトルは意味的な意味を捉え、コサイン類似度やユークリッド距離のようなメトリクスを用いて測定される、類似したテキスト片を近接したベクトルで表現することを可能にする。この特性は、セマンティック検索、クラスタリング、検索拡張生成(RAG)のようなアプリケーションで重要である。 Sentence Transformersライブラリは、高品質の文や段落の埋め込みを生成するための使いやすいインターフェースを提供する。Hugging Face Transformersの上に構築され、意味タスクのために微調整された幅広い事前学習済みモデルをサポートしています。 このエコシステムで最も人気があり、効果的なモデルの1つがオールMiniLM-L6-v2である: より大きなモデルはより微妙なエンベディングを提供するかもしれないが、all-MiniLM-L6-v2は性能、効率、コストの間で非常に優れたバランスを提供する。その384次元ベクトルは ほとんどの実用的なユースケース、特に初期段階の開発やリソースに制約のある環境では、このモデルで十分すぎる。エッジケースにおける精度のわずかな低下は、通常、スピードとスケーラビリティの大幅な向上によって相殺されます。そのため、AIアプリケーションの最初のイテレーションを構築する場合や、控えめなインフラストラクチャでパフォーマンスを最適化する場合は、all-MiniLM-L6-v2を使用することをお勧めします。 Pineconeベクトル埋め込み画像の保存と検索 テキストがベクトル埋め込みデータに変換されると、それを効率的に保存、管理、照会するための専用のデータベースが必要になります。従来のデータベースはこのために設計されていません。ベクトル・データベースは、埋め込みデータの高次元の性質を扱うために特別に設計されており、RAGパイプライン、セマンティック検索、パーソナライゼーション、その他のAI駆動型アプリケーションに不可欠なリアルタイムの類似性検索を可能にします。 Pineconeは、開発者フレンドリーなインターフェイス、低レイテンシの検索パフォーマンス、完全に管理されたインフラストラクチャで知られる人気のベクトルデータベースです。ベクトル検索インフラストラクチャの複雑さを抽象化することで、複雑なベクトルインデックスと検索を効率的に管理します。主なコンポーネントは以下の通りです: Pineconeは2つのデプロイメントアーキテクチャを提供する:ServerlessとPod-Based です。ほとんどのユースケース、特に開始時や動的な負荷に対処する場合は、シンプルさとコスト効率からサーバーレスが推奨されます。 セットアップと前提条件 パイプラインを構築する前に、以下のコンポーネントが適切に設定されていることを確認する。 前提条件 各APIキーの生成方法については、以下のツール固有の設定セクションを参照してください。 必要なライブラリのインストール このプロジェクトのコアとなるPythonライブラリをインストールする: これらのライブラリーは提供している: 環境変数の設定 プロジェクトのルート・ディレクトリに.envファイルを作成し、APIキーを追加する: ブライトデータ設定 Bright DataのWeb Unlockerを使用するには: 実装例と統合コードについては、Web Unlocker GitHub […]
6 分読
AI

LLMにおけるスーパーバイズド・ファインチューニングとは?

このPythonガイドでは、概念、ツール、ワークフロー、そしてAIプロジェクトを向上させる実践的な例を取り上げています。
7 分読
How to Bypass Amazon CAPTCHA blog image
ウェブデータ

アマゾンのCAPTCHAを回避する方法:ガイド2025

Amazon CAPTCHAを回避し、ウェブスクレイピングのワークフローを最適化する3つの実証済みの方法を学びましょう。
3 分読