You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
더 자연스러운 Go 스타일로 작성된 더 간단하고 유연한 웹 크롤러를 보고싶다면, gocrawl 의 경험이 기반이 된 패키지인 [fetchbot](https://github.com/PuerkitoBio/fetchbot) 를 참고.
6
6
7
7
## 특징
8
8
9
-
* 방문, 검사, 쿼리할 URL 에 대한 전체 제어(미리 초기화된 [goquery][]문서 사용)
10
-
*호스트 당 크롤 지연 적용
11
-
* robots.txt 규칙에 따름 ([robotstxt.go][robots] 라이브러리 사용)
12
-
*goroutines 를 이용한 동시 실행
13
-
*설정 가능한 로깅
14
-
*실행 논리에 대해 후크를 제공하는 개방적이고 사용자 정의 가능한 설계
9
+
* 방문, 검사, 쿼리할 URL 에 대한 전체 제어(미리 초기화된 [goquery][] 사용)
10
+
*호스트당 크롤 지연 가능
11
+
* robots.txt 규칙을 잘 따름 ([robotstxt.go][robots] 라이브러리 사용)
12
+
*goroutines을 이용한 동시 실행
13
+
* 로깅
14
+
*방문, URL필터링 등을 커스터마이징 할 수 있음
15
15
16
-
## 설치와 종속성
16
+
## 설치 방법과 의존성
17
17
18
-
gocrawl 은 다음의 사용자 환경 라이브러리를 따른다:
18
+
gocrawl은 아래 라이브러리들이 필요합니다. :
19
19
20
20
*[goquery][]
21
21
*[purell][]
22
22
*[robotstxt.go][robots]
23
23
24
-
`golang.org/x/net/html`에 간접적인 종속성이 있어 Go1.1+ 를 요구한다. 설치 시:
24
+
`golang.org/x/net/html`에 간접적인 종속성이 있어 Go1.1+ 를 요구한다. 설치:
25
25
26
26
`go get github.com/PuerkitoBio/gocrawl`
27
27
28
28
이전 버전으로 설치하려면 `$GOPATH/src/github.com/PuerkitoBio/gocrawl/` 디렉토리에 `git clone https://github.com/PuerkitoBio/gocrawl` 을 하고, (예를 들어)`git checkout v0.3.2` 을 실행하여 특정 버전을 체크아웃 하고, `go install`을 통해 Go 패키지를 빌드하고 설치한다.
29
29
30
30
## 변경 로그
31
31
32
-
***2019-07-22** : goquery 를 위해 미리 컴파일된 매처들 사용 (@mikefaraponov 지원). Tag v1.0.1.
33
-
***2016-11-20** : 로그 메세지가 열거된 URL들을 출력하도록 수정 (@oherych 지원). Tag as v1.0.0.
32
+
***2019-07-22** : goquery 를 위해 미리 컴파일된 matcher 사용 (@mikefaraponov 지원). Tag v1.0.1.
33
+
***2016-11-20** : 로그 메세지가 URL들을 출력하도록 수정 (@oherych 지원). Tag as v1.0.0.
34
34
***2016-05-24** : 원래 URL 에 리다이렉션을 위해 `*URLContext.SourceURL()` 과 `*URLContext.NormalizedSourceURL()` 설정 (see [#55][i55]). 깃허브 유저 [@tmatsuo][tmatsuo] 지원.
35
35
***2016-02-24** : 리퀘스트 만들기 위해 항상 `Options.UserAgent` 사용, robots.txt 정책 적용 시에만 `Options.RobotUserAgent` 사용. 코드를 좀 더 나은 godoc 문서로 보냄.
36
36
***2014-11-06** : net/html 의 import 경로를 golang.org/x/net/html 로 변경 (https://groups.google.com/forum/#!topic/golang-nuts/eD8dh3T9yyA 참고).
@@ -112,7 +112,7 @@ Gocrawl 은 캐싱, 지속성 및 종근성 탐지 논리로 본격적인 인덱
112
112
113
113
항상 그렇듯, 완전한 godoc 참조는 [여기][godoc]서 찾을 수 있다.
114
114
115
-
### 설계 이론적 근거
115
+
### 설계 구조
116
116
117
117
gocrawl 의 주요 사용 사례는 `robots.txt`의 제약 사항을 존중하고 지정된 호스트에 요청 사이의 *good web citizen* 크롤 지연을 적용하면서 일부 웹페이지를 크롤링하는 것이다. 다음과 같은 설계 결정사항을 따름:
118
118
@@ -227,9 +227,9 @@ gocrawl 의 주요 사용 사례는 `robots.txt`의 제약 사항을 존중하
227
227
228
228
***Visit** : `Visit(ctx *URLContext, res *http.Response, doc *goquery.Document) (harvested interface{}, findLinks bool)`. URL 방문할 때 호출. 사용 가능한`*goquery.Document`객체와 함께 URL 컨텍스트인 `*http.Response` response 객체를 수신 (아니면 `nil` 응답 본문을 구문 분석할 수 없는 경우). 프로세스에 링크와 gocrawl이 직접 링크를 찾아야 하는지 여부를 나타내는`bool`을 반환. ( 가능한 형식 확인하려면 [above](#types) 참고). 플래그가 `true`면, `harvested` 반환 값은 무시되고 입력할 링크를 위해 gocrawl은 goquery 문서를 검색. `false`면, `harvested` 데이터는 입력된다. `DefaultExtender.Visit` 구현은 `nil, true`을 반환하여 방문 페이지의 링크를 자동으로 찾아서 처리하도록 한다.
229
229
230
-
***Visited** : `Visited(ctx *URLContext, harvested interface{})`.페이지를 방문한 후 호출됨. 방문 중에 발견된 URL 컨텍스트 및 URL들은 인자로 전달됨.(`Visit` 기능이나 gocrawl 에 의해). 기본적으로 이 방법은 금지되어 있다.
230
+
***Visited** : `Visited(ctx *URLContext, harvested interface{})`.페이지를 방문한 후 호출됨. 방문 중에 발견된 URL 컨텍스트 및 URL들은 인자로 전달됨.(`Visit` 기능이나 gocrawl 에 의해). 기본적으로 이 함수는 비어 있습니다.
231
231
232
-
***Disallowed** : `Disallowed(ctx *URLContext)`. 입력된 URL이 robots.txt 정책에 의해 거부될 때 호출된다. 기본적으로 이 방법은 금지되어 있다.
232
+
***Disallowed** : `Disallowed(ctx *URLContext)`. 입력된 URL이 robots.txt 정책에 의해 거부될 때 호출된다. 기본적으로 이 함수는 비어있습니다.
233
233
234
234
마지막으로, 관례상, 매우 구체적인 유형의 `chan<- interface{}`를 가진 `EnqueueChan`이라는 필드가 존재하여 `Extender` 인스턴스에서 접속할 수 있는 경우, 이 필드는 [the expected types](#types)을 URL을 입력하기 위한 데이터로 받아들이는 입력 채널로 설정된다. 그러면 이 데이터는 마치 방문에서 수확한 것처럼 크롤러에 의해 처리될 것이다. `Filter()`에 대한 호출을 촉발하고, 하영될 경우 패치되고 방문하게 된다.
235
235
@@ -242,8 +242,9 @@ gocrawl 의 주요 사용 사례는 `robots.txt`의 제약 사항을 존중하
0 commit comments