예의 바른 네트워크 파충류 구축
검색엔진이나 사이트를 분석하고자 하는 모든 사람들에게 인터넷은 매우 중요한 도구이다.그러나 사이트에 대해 그물을 오르는 행위는 사이트 운영자의 대량의 자원을 소모할 수 있으며 구체적으로는 사이트의 그물을 오르는 방식에 달려 있다.
예를 들어 만약 당신이 몇 초 안에 1000페이지의 사이트를 잡았다면, 당신은 저대역폭 호스트에 상당한 서버 부하를 가져올 수 있을 것이다.만약 당신이 느린 페이지를 불러오기 위해 기어오르기를 했지만, 기어오르기 프로그램이 그것을 정확하게 처리하지 않았다면, 끊임없이 같은 페이지를 다시 조회하면 어떻게 해야 합니까?그냥 기어다니는 거라면 기어가지 말아야 할 페이지는요?이런 일들은 사이트 운영자들을 매우 불안하게 할 수도 있다.
앞의 글에서 어떻게 사이트 운영자의 측면에서 이 문제들을 해결하는지 살펴봤다.인터넷 파충류는 이 문서의 규칙을 준수하여 막히는 것을 방지해야 한다.로봇 말고txt 파일, 그리고 다른 일들은 막아야 합니다.
대규모 사이트에 접속할 때, 특히 상업적 목적을 위해 사용자 정의 사용자 에이전트를 제공하여 사이트 운영자가 접속할 수 있는 페이지를 제한할 수 있는 기회를 제공하는 것이 가장 좋다.
기어오르는 주파수는 또 다른 개선이 필요한 부분으로 성능 부담을 늘리지 않고 사이트를 충분히 빨리 기어다닐 수 있다.기어오르기를 초당 소량의 요청으로 제한하기를 원할 수도 있습니다.요청이 걸리는 시간을 추적하고 파충류 프로그램을 제한해 잠재적인 사이트 부하 문제를 보상하는 것도 좋은 생각이다.
Actual footage of a server catching fire because of load, totally not from a TV Show
나는 매일 프로그래밍을 하고 있다.NET와 나의 프로젝트는 인터넷 파충류가 필요하다.몇몇 유행하는 인터넷 파충류는 이미 그곳에 있다. Abot과DotnetSpider를 포함하지만, 서로 다른 원인으로 인해 그들은 나의 수요에 적합하지 않다.
나는 처음에 나의 프로젝트에 Abot을 설치했지만, 나는 줄곧 나의 프로젝트를 이식하고 있다.NET 커널, 지원되지 않습니다.이 라이브러리는 더 이상 지원하지 않는 라이브러리 판본 해석 로봇을 사용했다.txt 파일.
DotnetSpider를 사용하면 지원됩니다.NET 핵심이지만 완전히 다른 과정을 중심으로 설계되어 메시지 대기열, 모델 귀속, 내장 데이터베이스 쓰기와 함께 사용됩니다.이것들은 모두 매우 멋진 기능이지만, 내 자신의 요구에 있어서는 너무 지나치다.
비동기/기다림을 지원하는 간단한 파충류 프로그램을 원합니다.NET Core supportInfinityCrawler가 탄생했습니다!
Turners 소프트웨어 / InfinityCrawler 회사
간단하지만 기능이 강한 인터넷 파충류 창고순액
무한 파충류
C 언어 중 간단하지만 기능이 강한 웹 파충류 라이브러리#
특징
X-Robots-Tag
제목 및 <meta name="robots" />
표시async
/await
시스템예의 바르게 기어가다
이 파충류는 빠르지만 예의 바른 사이트를 둘러싸고 기어다니며 만들어진 것이다
이것은 지연과 절류를 조정할 수 있는 많은 설정을 통해 이루어진 것이다.
다음을 제어할 수 있습니다.
crawl-delay
, 최소값솔직히 말해서, 나는 왜 그것을 인피니티 크롤러라고 부르는지 모르겠다. 당시에 듣기에 매우 멋있어서 나는 이렇게 말했다.
이 파충류는 이미 들어갔다.NET 표준은 mySitemapTools와RobotsExclusionTools 라이브러리를 바탕으로 한다.이것은 사이트 맵 라이브러리를 사용하여 기어오르기 시작해야 할 URL 목록의 피드를 도와줍니다.
그것은 로봇이 정의한 복종 주파수를 포함하여 기어오르는 주파수에 대한 지원을 내장하고 있다.txt 파일.웹 사이트에 충격을 주지 않도록 느린 요청을 감지하고 자동으로 조절할 수 있으며, 성능이 언제 개선되고 정상으로 회복되는지 측정할 수 있다.
using InfinityCrawler;
var crawler = new Crawler();
var results = await crawler.Crawl(siteUri, new CrawlSettings
{
UserAgent = "Your Awesome Crawler User Agent Here"
});
InfinityCrawler 는 모든 용도로 사용할 수 있습니다.NET 프로젝트는 아직 초기 단계입니다.나는 그것의 핵심 기능에 만족하지만, 몇 단계의 재편성과 확장 테스트를 거칠 가능성이 높다.저는 개인적으로 자랑스럽습니다how I implemented the async/await part. 하지만 이 분야의 전문가와 이야기하고 싶습니다.NET는 나의 실현을 점검하고 그것을 어떻게 개선할 것인가에 대한 건의를 한다.
Reference
이 문제에 관하여(예의 바른 네트워크 파충류 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/turnersoftware/building-a-polite-web-crawler-3b8h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)