2009-10-31 4 views
4

나는 수천 개의 웹 사이트를 크롤링하려고합니다. 여기에서 나는 HTML 컨텐트에만 관심이 있습니다.약 1000 개의 웹 사이트에서 데이터를 추출하고 파싱하기위한 웹 크롤러

그리고 나는 몇 달 동안 Heritrix 2.0 크롤러를 사용 해왔다. 내가 관심이있는 특정 내용을 추출하는 XPath는 사용한 구문 분석하는 XML에

를 HTML 변환,하지만 난 엄청난 성능에 달렸다 , 메모리 및 안정성 문제 (매일 Heritrix가 충돌하고 JVM 매개 변수로 메모리 사용을 제한하는 시도가 성공하지 못함).

현장에서의 경험을 토대로 수천 개의 출처에서 콘텐츠를 추출하고 구문 분석하는 데 사용할 크롤러는 무엇입니까?

답변

3

나는 하지는 '심각한'크롤링 (중단 된) 2.x는 지점 또는 3.x를 (현재의 개발)를 사용하는 것 가장자리.

Heritrix 1.14.3은 가장 최근의 안정적인 릴리스이며 실제로는 입니다. 크고 작은 크롤링을 위해 많은 기관에서 사용합니다. 저는 수만 개의 도메인에 대한 크롤링을 실행하여 일주일 만에 수천만 개의 URL을 수집합니다.

3.x 브랜치는 안정적인 릴리스에 가까워지고 있지만 인터넷 아카이브 및 기타 사이트의 성능 및 안정성을 향상시키기 위해 일반적인 사용을 위해 조금 기다려야 할 것입니다.

업데이트 : 사람이 최근이 상향 투표 때문에 나는 그것이 Heritrix 3.x를 이제 안정적이고 Heritrix 함께 시작하는 사람들을 위해 권장되는 버전인지 주목할 가치가있다 생각합니다.

+0

고맙습니다. 2.0 버전에 대해 의심해 보았습니다. 그러나 사용자 정의 개발을 한 이래로 1.14로 변환하는 것이 두려워서 1.14도 작동하지 않음을 알았습니다. 이제는 1.14로 다운 그레이드하는 것에 대해 더 확신합니다. –

+0

H2가 가능한 최악의 선택입니다. H3은 현재 베타 버전으로 출시되고 있으며 H1은 수년간 안정적이었습니다. – Kris

+2

Heritrix 1.14 => 2.0 => 3.0으로 패턴을 발견했습니다. 유명한 현대적인 예에서 "Xp => Vista => 7"패턴이라고 부를 수 있습니다 :-) –

3

Scrapylxml 또는 BeautifulSoup 패키지 중 하나를 사용하여 직접 작성하는 것이 좋습니다. Google에서 좋은 자습서를 찾아야합니다. Scrapy + lxml을 직장에서 사용하여 ~ 600 개의 웹 사이트가 깨진 링크를 확인합니다.

+0

Scapy 위에 독자적인 제어 시스템을 구축 했습니까, 아니면 Scapy가 그 목적을위한 방법을 제공합니까? (예를 들어, 각 크롤링을 최대 6 시간 실행 한 다음 다시 시작하고 Heritrix가 멈추었을 때 크롤링을 제어하고 특정 크롤링을 다시 시작하는 특정 Java 프로그램을 개발했습니다. –

+0

당신이 무엇을 요구하고 있는지 확실하지 않습니다. Scrapy는 스크래핑을위한 프레임 워크이므로, 당신은 그것의 위에 구축합니다. 당신이 "시간"을 얻기 위해 긁어 모으는 것이 이상 할 것 같아요. 그것이 최대 일 때 "레벨"을 설정하는 것이 더 좋지 않습니까? –

0

와우. 검색 엔진과 같은 최첨단 크롤러는 하루에 1 백만 개의 크롤링 및 색인 URL을 사용합니다. 물론 HTML에서 XML 로의 렌더링 단계는 다소 시간이 걸리지 만 성능에 대해서는 당신이 동의합니다. 개인 크롤러 만 사용 했으므로 사용할 수 없지만이 성능 수치가 평가에 도움이되기를 바랍니다. 당신이 아니면 그냥 출혈에있는 같은 Heritrix을 개선하는 데 도움이하려는 경우가 아니면

+0

~ 2mm 페이지/일을 추출 할 수있는 사용자 정의 크롤러를 작성할 수있었습니다. 그것을 확장하는 것에 대해 가장 어려운 점은 수확 된 페이지의 수가 증가함에 따라 Frontier (페이지가 이미 방문 했음) 검색이 빠르다는 것을 보장하는 것이 었습니다. – Joel