Golang은 많은 작업을 완료하는 데 사용할 수 있는 매우 인기 있는 백엔드 프로그래밍 언어이며 그 중 하나는 크롤링입니다. 이 기사에서는 Golang을 사용하여 간단한 크롤러 프로그램을 작성하는 방법을 소개합니다.
크롤러 작성을 시작하기 전에 GoScrape라는 Golang 웹 크롤러 프레임워크를 설치해야 합니다. 사용하기 전에 먼저 GoScrape를 설치해야 합니다.
go get github.com/yhat/scrape
크롤러를 구현하기 전에 먼저 크롤러의 목표를 결정해야 합니다. 이 예에서는 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의 텍스트 추출 기능을 사용하여 추출하겠습니다. 마지막으로 문제 제목을 콘솔에 출력합니다.
마지막으로 이 두 기능을 연속적으로 실행할 수 있도록 결합합니다. 다음 코드는 이러한 기능을 사용하여 Zhihu를 크롤링하는 방법을 보여줍니다.
func main() { url := "https://www.zhihu.com/search?type=content&q=golang" content, err := getPageContent(url) if err != nil { panic(err) } extractData(content) }
여기에서는 앞서 언급한 두 기능을 통합하는 "main" 기능을 정의합니다. 먼저 Zhihu의 검색 결과 페이지를 얻기 위해 “getPageContent” 함수를 호출합니다. 오류가 발생하면 프로그램을 종료하고, 그렇지 않으면 반환 결과를 "extractData" 함수에 전달합니다. 이 함수는 페이지 내용을 구문 분석하고 질문 제목을 추출한 후 최종적으로 콘솔에 출력합니다.
이 글에서는 Golang을 사용하여 간단한 크롤러 프로그램을 작성하는 방법을 소개합니다. 우리는 단계별 설명과 함께 GoScrape와 표준 라이브러리를 사용하여 HTML 콘텐츠를 가져오고 처리하는 방법을 배웠습니다. 실제로 이러한 개념은 더 복잡한 크롤러 동작을 달성하기 위해 확장되고 최적화될 수 있습니다.
위 내용은 Golang을 크롤링하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!