2009-08-20 3 views
2

나는 비교적 간단한 경우가 있습니다. 기본적으로 다양한 웹 사이트 간의 링크에 대한 데이터를 저장하고 도메인을 제한하고 싶지는 않습니다. 일부 http 클라이언트 라이브러리를 사용하여 내 크롤러를 작성할 수는 있지만 일부 불필요한 작업을 수행 할 것이라고 생각합니다. 페이지를 한 번 이상 검사하지 않고 robots.txt 파일을 읽고 사용하는 방법을 배우고, 어쩌면 동시성과 분산을 이루려는 시도 일 수도 있습니다. 그리고 아직 생각하지 못한 많은 것들이있을 것입니다.Extensible/Customizable 웹 크롤링 엔진/프레임 워크/라이브러리?

그래서 이러한 종류의 것을 처리하는 웹 크롤링을위한 프레임 워크를 원했지만 응답 (내 경우에는 링크를 추출하고 저장하는 방법)을 처리하도록 지시했습니다. 대부분의 크롤러는 사용자가 검색을 위해 웹 페이지의 색인을 생성한다고 가정하는 것처럼 보이며, 좋지 않습니다. 맞춤 설정할 수있는 것이 필요합니다.

MongoDB 데이터베이스에 링크 정보를 저장하고 싶습니다. 따라서 링크가 프레임 워크에 저장되는 방법을 지정할 수 있어야합니다. 그리고이 질문을 언어에 구애받지 않는다고 태그했지만, 이것은 MongoDB의 지원 언어 (Python, Ruby, Perl, PHP, Java 및 C++) 중 하나의 프레임 워크로 선택을 제한해야한다는 것을 의미합니다. 넓은 그물. 필자는 동적 인 언어를 선호하지만 어떤 제안이든 열려 있습니다.

Scrapy (깔끔하게 보임) 및 JSpider (121 페이지 사용자 설명서를 기반으로 한 "중량감"이 좋을지도 모르지만)이 있지만 거기 있는지 알고 싶습니다. 밖에 다른 좋은 옵션들이 있었어.

+1

JSpider와 관련하여 마지막 릴리스가 http://j-spider.sourceforge.net/news.html에 따라 2003에서 비롯된 것일뿐만 아니라이 포럼 항목도 사실상 프로젝트의 죽음을 암시하고 있습니다. http :// /sourceforge.net/forum/message.php?msg_id=5600799; 이것은 반드시 쇼 스토퍼는 아니지만, 개인적으로는 오늘 그 위에 솔루션을 구축하는 것을 꺼려합니다. 안정되고 성숙한 기본 프로토콜과 메커니즘에도 불구하고 모든 웹이 매우 빠르게 변화하고 있기 때문입니다. –

답변

6

태그 오버 web-crawler에 꽤 비슷한 비슷한 질문이 있으므로 스택 오버플로를 이미 검색했다고 가정 해 보겠습니다.

  • 파이썬
    • Scrapy : 나는 정성 들여 자제 단지 몇 내가 손에 작업에 대한 검토 가치가 기분이 나열 광범위 다음 중 어느 것도 사용하지 데 나는이 다시 두 번째 그것은 유망한로 언급 이는 특히 현대적이고 높은 평가를 받고있는 네트워킹 엔진 인 Twisted을 기반으로하기 때문에 가능합니다.
    • Mechanize : WWW-Mechanize을 기준으로 아래 Perl을 참조하십시오.
    • Similar question specific to Python, Mechanize, Scrapy 및 기타에 대한 몇 가지 세부 정보.
  • 루비 (모든 이들를 사용하지 않음)
  • 자바
    • Nutch : 매우 성숙하고 강력한 커뮤니티를 가지고 Apache Lucene을 기반으로 꽤 성숙 프로젝트, 문서화, 전용 확장; 여전히 고급 통합 시나리오와 관련된 문제가있는 것으로 보입니다 (this question 참조).
    • Heritrix : 매우 성숙한 프로젝트, 잘 문서화 된 전용 확장 성, 백본의 Internet Archive; 어떤 사람들은 더 나은 고급 통합 시나리오를 다룰 것으로 보이며, 다시 this question을 참조하십시오.

음, 검토 행운, 당신은 또한 Node.JS.에 PhantomJS와 CasperJS를 시도 할 수 있습니다

0

)

0

StormCrawler이 질문을 받았을 때 법안이 완벽하게 적용되었을 때 주변에 있지 않았습니다. 그것은 Java로, 고도로 모듈화되고 확장 가능하며 위에서 설명한 것과 정확히 동일하게 사용자 정의 할 수 있습니다.