Golang は非常に人気のあるバックエンド プログラミング言語であり、多くのタスクを完了するために使用できますが、その 1 つにクロールがあります。この記事では、Golang を使用して簡単なクローラー プログラムを作成する方法を紹介します。
クローラーの作成を開始する前に、GoScrape と呼ばれる Golang Web クローラー フレームワークをインストールする必要があります。これを使用する前に、まず GoScrape をインストールする必要があります。
go get github.com/yhat/scrape
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をクロールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。