ホームページ > バックエンド開発 > Golang > Golang を使用して Web クローラーを実装する方法

Golang を使用して Web クローラーを実装する方法

WBOY
リリース: 2023-06-24 09:17:05
オリジナル
932 人が閲覧しました

Web クローラーは、Web クローラーおよび Web スパイダーとも呼ばれ、インターネット上の情報をクロールするために使用される自動プログラムです。 Web クローラーを使用すると、大量のデータを取得し、そのデータを分析および処理できます。この記事では、Golang を使用して Web クローラーを実装する方法を紹介します。

1. Golang の概要
Golang は Go 言語としても知られ、Google によって開発され、2009 年にリリースされました。 Golang は、効率、信頼性、セキュリティ、シンプルさ、同時実行性などの機能を備えた、静的に型付けされたコンパイル言語です。 Golang の効率性とシンプルさにより、Web クローラーの実装に Golang を使用する人が増えています。

2. 実装手順

  1. Golang のインストール
    まず、ローカル コンピューターに Golang をインストールする必要があります。 Golang は、Golang 公式 Web サイト (https://golang.org/) からダウンロードしてインストールできます。
  2. 依存関係パッケージのインポート
    Golang を使用して Web クローラーを実装する場合、「net/http」、「io/ioutil」、「regexp」などのサードパーティ パッケージを使用する必要があります。パッケージ。これらのパッケージは go get コマンドを使用してインストールできます:
    go get -u github.com/PuerkitoBio/goquery
    go get -u golang.org/x/net/html
    go get -u golang。 org /x/text/encoding/unicode
    go get -u golang.org/x/text/transform

その中で、「goquery」パッケージは HTML ドキュメントの解析に使用されます。 "html" パッケージが使用されます。 特定の HTML ドキュメント パーサーの場合、エンコーディングの解析には "unicode" パッケージが使用され、エンコーディングの変換には "transform" パッケージが使用されます。

  1. ターゲット Web サイトとクロールする必要がある情報を決定する
    Web クローラーを実装する前に、ターゲット Web サイトとクロールする必要がある情報を決定する必要があります。 Douban 映画を例に挙げると、クロールする必要がある情報には、映画の名前、評価、コメントが含まれます。
  2. HTML ドキュメントの解析
    GoQuery パッケージを使用して HTML ドキュメントを解析し、http GET メソッドを使用してターゲット Web サイトから HTML ドキュメントを取得し、GoQuery パッケージを使用して HTML ドキュメント内の情報を解析します。 。以下は、HTML ドキュメントを解析するコードです:

resp, err := http.Get(url)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
doc, err := goquery.NewDocumentFromReader(resp.Body)

  1. Extract information from HTML ドキュメントから必要な情報を抽出します。情報を抽出するコードは次のとおりです。
doc.Find(".hd").Each(func(i int, s *goquery.Selection) {

title := s. Find( "span.title").Text()
評価 := s.Find("span.rated_num").Text()
コメント := s.Find("span.inq").Text ()
})

    情報の保存
  1. 抽出した情報をデータ ファイルまたはデータベースに保存します。情報を CSV ファイルに保存するコードは次のとおりです:
f, err := os.Create("movies.csv")

if err != nil {
log . Fatal(err)
}
defer f.Close()
w := csv.NewWriter(f)
w.Write([]string{"タイトル", "評価", "コメント "})
for i := 0; i レコード := []string{タイトル[i]、評価[i]、コメント[i]}
w.Write(record)
}
w.Flush()

    フルコード
import (

"encoding/csv"
"github.com/PuerkitoBio/goquery"
"log"
"net/http"
"os"
"regexp"
)
func クロール(URL 文字列) {
resp, err := http.Get(url)
if err != nil {

  log.Fatal(err)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

defer resp.Body.Close()
doc, err : = goquery.NewDocumentFromReader(resp.Body)
if err != nil {

  log.Fatal(err)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

titles := []string{}

ratings := []string{ }
コメント := []string{}
re := regexp.MustCompile(
s ) doc.Find(".hd").Each(func(i int, s *goquery.Selection) {

  title := s.Find("span.title").Text()
  title = re.ReplaceAllString(title, "")
  rating := s.Find("span.rating_num").Text()
  comment := s.Find("span.inq").Text()
  titles = append(titles, title)
  ratings = append(ratings, rating)
  comments = append(comments, comment)
ログイン後にコピー

})

f, err := os.Create("movies.csv")
if err != nil {

  log.Fatal(err)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

}

defer f.Close()
w := csv.NewWriter(f)
w.Write([]string{"title", "評価", "コメント"})
for i := 0; i < len(titles); i {

  record := []string{titles[i], ratings[i], comments[i]}
  w.Write(record)
ログイン後にコピー

}

w.Flush()
}

    結論
  1. Golang を使用するWeb クローラーを実装するには、HTML ドキュメントの解析、正規表現の使用、ファイル操作など、特定のプログラミング知識を習得する必要があります。この記事で紹介する手順に従って Web クローラーを実装すると、対象の Web サイトの情報を取得し、その情報をローカル コンピューターに保存できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート