Golangをクロールする方法

王林
リリース: 2023-05-21 19:05:05
オリジナル
687 人が閲覧しました

Golang は非常に人気のあるバックエンド プログラミング言語であり、多くのタスクを完了するために使用できますが、その 1 つにクロールがあります。この記事では、Golang を使用して簡単なクローラー プログラムを作成する方法を紹介します。

  1. 準備

クローラーの作成を開始する前に、GoScrape と呼ばれる Golang Web クローラー フレームワークをインストールする必要があります。これを使用する前に、まず GoScrape をインストールする必要があります。

go get github.com/yhat/scrape
ログイン後にコピー
  1. クローラーの実装
# クローラーを実装する前に、まずクローラーの目的を決定する必要があります。この例では、Golang を使用して、Zhihu 上の「Golang」に関連する質問をクロールします。

まず、Zhihu サーバーにリクエストを送信し、ページのコンテンツを取得する関数を定義する必要があります。次のコードは、ページ コンテンツを取得する単純な関数を実装します。

func getPageContent(url string) ([]byte, error) { res, err := http.Get(url) if err != nil { return nil, err } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { return nil, err } return body, nil }
ログイン後にコピー

この関数は、Go の標準ライブラリ "net/http" および "io/ioutil" を使用してリクエストを実行し、応答を読み取ります。処理が完了すると、応答の内容とエラー オブジェクトが返されるので、エラーを処理するときにヘルプを得ることができます。

次に、クロールされたページのコンテンツを処理する必要があります。この例では、GoScrape を使用して HTML を解析し、必要な情報を抽出します。ページ コンテンツを解析する関数は次のとおりです。

func extractData(content []byte) { root, err := html.Parse(bytes.NewReader(content)) if err != nil { panic(err) } matcher := func(n *html.Node) bool { if n.Type == html.ElementNode && n.Data == "a" { for _, attr := range n.Attr { if attr.Key == "class" && attr.Val == "question_link" { return true } } } return false } questions := scrape.FindAll(root, matcher) for _, q := range questions { fmt.Println(scrape.Text(q)) } }
ログイン後にコピー

この関数は、「golang.org/x/net/html」を使用して HTML を解析し、GoScrape を使用して、ページ内のコンテンツに関連する HTML 要素を見つけます。私たちに必要な質問。この例では、「a」タグとクラス名「question_link」をマッチャーとして使用します。正しく使用すると、このマッチャーは問題のあるすべての接続を含む HTML 要素を返します。最後に、GoScrape のテキスト抽出機能を使用してそれらを抽出します。最後に問題のタイトルをコンソールに出力します。

最後に、これら 2 つの関数を組み合わせて、連続的に実行できるようにします。次のコードは、これらの関数を使用して Zhihu をクロールする方法を示しています。

func main() { url := "https://www.zhihu.com/search?type=content&q=golang" content, err := getPageContent(url) if err != nil { panic(err) } extractData(content) }
ログイン後にコピー
ここでは、前述の 2 つの関数を統合する「メイン」関数を定義します。まず、「getPageContent」関数を呼び出して、Zhihu の検索結果ページを取得します。エラーが発生した場合はプログラムを終了します。そうでない場合は、戻り結果を「extractData」関数に渡します。この関数は、ページのコンテンツを解析して質問のタイトルを抽出し、最終的にコンソールに出力します。

    概要
この記事では、Golang を使用して簡単なクローラー プログラムを作成する方法を紹介します。 GoScrape と標準ライブラリを使用して HTML コンテンツを取得して処理する方法を、ステップごとの説明とともに学びました。実際には、これらの概念を拡張および最適化して、より複雑なクローラの動作を実現できます。

以上がGolangをクロールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!