まず、Go をインストールする必要があります。Go をダウンロードしてインストールする手順を説明します。
プロジェクト用に新しいフォルダーを作成し、そのディレクトリに移動して、次のコマンドを実行します。
go mod init scraper
? go mod init コマンドは、実行されるディレクトリで新しい Go モジュールを初期化し、コードの依存関係を追跡するための go.mod ファイルを作成するために使用されます。依存関係の管理
Colibri をインストールしましょう:
go get github.com/gonzxlez/colibri
? Colibri は、JSON で定義された一連のルールを使用して、Web 上の構造化データをクロールおよび抽出できる Go パッケージです。リポジトリ
必要なデータを抽出するために colibri が使用するルールを定義します。ドキュメント
URL https://pkg.go.dev/search?q=xpath に対して HTTP リクエストを作成します。これには、Go パッケージ内の xpath に関連する Go パッケージのクエリの結果が含まれます。
Web ブラウザに含まれる開発ツールを使用して、ページの HTML 構造を検査できます。ブラウザ開発ツールとは何ですか?
<div class="SearchSnippet"> <div class="SearchSnippet-headerContainer"> <h2> <a href="/github.com/antchfx/xpath" data-gtmc="search result" data-gtmv="0" data-test-id="snippet-title"> xpath <span class="SearchSnippet-header-path">(github.com/antchfx/xpath)</span> </a> </h2> </div> <div class="SearchSnippet-infoLabel"> <a href="/github.com/antchfx/xpath?tab=importedby" aria-label="Go to Imported By"> <span class="go-textSubtle">Imported by </span><strong>143</strong> </a> <span class="go-textSubtle">|</span> <span class="go-textSubtle"> <strong>v1.2.5</strong> published on <span data-test-id="snippet-published"><strong>Oct 26, 2023</strong></span> </span> <span class="go-textSubtle">|</span> <span data-test-id="snippet-license"> <a href="/github.com/antchfx/xpath?tab=licenses" aria-label="Go to Licenses"> MIT </a> </span> </div> </div>
クエリの結果を表す HTML 構造のフラグメント。
次に、クラス SearchSnippet を持つ HTML 内のすべての div 要素を検索するセレクター “packages” が必要です。これらの要素からセレクター “ name” は、要素 h2 内の要素 a のテキストとセレクター「path” は、 内の a 要素の href 属性の値を受け取ります。 h2 要素。つまり、「name」 は Go パッケージの名前を受け取り、「path」 はパッケージのパスを受け取ります :)
{ "method": "GET", "url": "https://pkg.go.dev/search?q=xpath", "timeout": 10000, "selectors": { "packages": { "expr": "div.SearchSnippet", "all": true, "type": "css", "selectors": { "name": "//h2/a/text()", "path": "//h2/a/@href" } } } }
package main import ( "encoding/json" "fmt" "github.com/gonzxlez/colibri" "github.com/gonzxlez/colibri/webextractor" ) var rawRules = `{ "method": "GET", "url": "https://pkg.go.dev/search?q=xpath", "timeout": 10000, "selectors": { "packages": { "expr": "div.SearchSnippet", "all": true, "type": "css", "selectors": { "name": "//h2/a/text()", "path": "//h2/a/@href" } } } }` func main() { we, err := webextractor.New() if err != nil { panic(err) } var rules colibri.Rules err = json.Unmarshal([]byte(rawRules), &rules) if err != nil { panic(err) } output, err := we.Extract(&rules) if err != nil { panic(err) } fmt.Println("URL:", output.Response.URL()) fmt.Println("Status code:", output.Response.StatusCode()) fmt.Println("Content-Type", output.Response.Header().Get("Content-Type")) fmt.Println("Data:", output.Data) }
webextractor の新しい機能を使用して、データの抽出を開始するために必要なものを含む Colibri 構造を生成します。
次に、JSON 内のルールを Rules 構造に変換し、Extract メソッドを呼び出してルールを引数として送信します。
出力を取得し、HTTP 応答の URL、HTTP ステータス コード、応答のコンテンツ タイプ、セレクターで抽出されたデータが画面に表示されます。出力構造についてはドキュメントを参照してください。
次のコマンドを実行します:
go mod tidy
最後に、次のコマンドを使用して Go でコードをコンパイルして実行します。
go run scraper.go
つまり、Go の Web スクレイピングは、幅広い Web サイトから情報を抽出するために使用できる強力で多用途なテクニックです。 Web スクレイピングは、Web サイトの利用規約を尊重し、サーバーの過負荷を避けて倫理的に実行する必要があることを強調することが重要です。
以上がWebスクレイピングを始めるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。