코어 포인트
모듈은 HTML 문자열에서 DOM을 구축하고 구문 분석 할 수있는 jQuery의 서브 세트를 구현하지만 제대로 구조화되지 않은 HTML을 다루기가 어려울 수 있습니다. -
cheerio
결합 와 request
를 결합하면 웹 페이지의 특정 요소를 추출하기 위해 완전한 웹 크롤러를 만들 수 있지만 동적 컨텐츠를 처리하고 금지를 피하고 로그인 또는 사용이 필요한 웹 사이트를 처리 할 수 있습니다. 추가 도구 또는 전략.
-
웹 크롤러는 프로그래밍 방식으로 웹 페이지에 액세스하고 데이터를 추출하는 소프트웨어입니다. 콘텐츠 복제와 같은 문제로 인해 웹 크롤링은 다소 논란의 여지가있는 주제입니다. 대부분의 웹 사이트 소유자는 공개적으로 사용 가능한 API를 통해 데이터에 액세스하는 것을 선호합니다. 불행히도, 많은 웹 사이트는 API 품질이 좋지 않으며 API도 전혀 제공하지 않습니다. 이로 인해 많은 개발자들이 웹 크롤링으로 향했습니다. 이 기사는 Node.js에서 자신의 웹 크롤러를 구현하는 방법을 알려줍니다. 웹 크롤링의 첫 번째 단계는 원격 서버에서 소스 코드를 다운로드하는 것입니다. "node.js에서 http 요청 만들기"에서 독자들은 모듈 다운로드 페이지를 사용하는 방법을 배웠습니다. 다음 예제는 node.js에서 GET 요청을 만드는 방법을 빠르게 검토합니다.
cheerio
더 어려운 단계 인 웹 크롤링의 두 번째 단계는 다운로드 된 소스 코드에서 데이터를 추출하는 것입니다. 클라이언트 측 에서이 작업은 Selector API 또는 JQuery와 같은 라이브러리를 사용하여 쉽게 달성 할 수 있습니다. 불행히도, 이러한 솔루션은 DOM을 쿼리 할 수 있다는 가정에 의존합니다. 불행히도 Node.js는 DOM을 제공하지 않습니다. 아니면 있습니까? -
치어리오 모듈
request
<.> node.js에는 내장 DOM이 없지만 HTML 소스 코드 문자열에서 DOM을 빌드 할 수있는 모듈이 있습니다. 두 개의 인기있는 DOM 모듈은 cheerio
와 입니다. 이 기사는 다음 명령을 사용하여 설치할 수있는 에 중점을 둡니다.
모듈은 jQuery의 하위 집합을 구현하므로 많은 개발자가 신속하게 시작할 수 있습니다. 실제로 는 jQuery와 매우 유사하며 에서 구현되지 않은 jQuery 함수를 사용하려고 시도하는 것은 쉽습니다. 다음 예제는 request
를 사용하여 HTML 문자열을 구문 분석하는 방법을 보여줍니다. 첫 번째 줄은 를 프로그램으로 가져옵니다. 변수는 HTML 조각을 구문 분석 할 저장합니다. 3 행에서 를 사용하여 HTML을 구문 분석하십시오. 결과는 변수에 할당됩니다. 달러 표시는 전통적으로 jQuery에서 사용 되었기 때문에 선택되었습니다. Line 4는 CSS 스타일 선택기를 사용하여 요소를 선택합니다. 마지막으로 메소드를 사용하여 목록의 내부 HTML을 인쇄하십시오.
<code class="language-javascript">var request = require("request");
request({
uri: "http://www.sitepoint.com",
}, function(error, response, body) {
console.log(body);
});</code>
제한
는 적극적으로 개발 중이며 지속적으로 개선되고 있습니다. 그러나 여전히 몇 가지 제한 사항이 있습니다. 가장 실망스러운 측면은 HTML 파서입니다. HTML 파싱은 어려운 문제이며 HTML이 잘못된 웹 페이지가 많이 있습니다. 이 페이지에서 가 충돌하지는 않지만 요소를 선택할 수 없다는 것을 알 수 있습니다. 따라서 오류가 선택기인지 또는 페이지 자체인지 확인하기가 어렵습니다. cheerio
cheerio
크롤링 jspro cheerio
다음 예제는 와 를 결합하여 완전한 웹 크롤러를 구축합니다. 이 샘플 크롤러는 JSPRO 홈페이지의 모든 기사의 제목과 URL을 추출합니다. 처음 두 줄은 필요한 모듈을 예제로 가져옵니다. JSPRO 홈페이지의 소스 코드를 3 행에서 5 행에서 다운로드하십시오. 그런 다음 소스 코드를 구문 분석을 위해 로 전달하십시오.
JSPRO 소스 코드를 보면 각 게시물 제목은 가있는 request
요소에 포함 된 링크임을 알 수 있습니다. 7 행의 선택기는 모든 기사 링크를 선택합니다. 그런 다음 cheerio
함수를 사용하여 모든 기사를 반복하십시오. 마지막으로, 기사 제목과 URL은 각각 링크의 텍스트와 cheerio
속성에서 얻습니다.
결론 <code class="language-bash">npm install cheerio</code>
이 기사는 node.js에서 간단한 웹 크롤러를 만드는 방법을 보여줍니다. 이것이 웹 페이지를 크롤링하는 유일한 방법은 아닙니다. 헤드리스 브라우저 사용과 같은 다른 기술이있어 더 강력하지만 단순성 및/또는 속도에 영향을 줄 수 있습니다. Phantomjs 헤드리스 브라우저에 대한 다가오는 기사를 후속 조치하십시오. entry-title
node.js 웹 크롤링 FAQ (FAQ) <a></a>
node.js 웹 크롤링에서 동적 컨텐츠를 처리하는 방법은 무엇입니까? each()
Node.js에서 동적 컨텐츠를 처리하는 것은 콘텐츠가 비동기로로드되기 때문에 약간 까다로울 수 있습니다. DevTools 프로토콜을 통해 크롬 또는 크롬을 제어하기 위해 고급 API를 제공하는 Node.js 라이브러리 인 Puppeteer와 같은 라이브러리를 사용할 수 있습니다. 인형극은 기본적으로 헤드리스 모드로 실행되지만 크롬 또는 크롬을 완전히 실행하도록 구성 할 수 있습니다. 이를 통해 사용자 상호 작용을 시뮬레이션하여 동적 컨텐츠를 크롤링 할 수 있습니다. href
웹 페이지를 크롤링 할 때 금지되지 않도록하는 방법은 무엇입니까?
웹 사이트에서 비정상적인 트래픽을 감지하면 웹 크롤링으로 인해 IP가 금지 될 수 있습니다. 이를 피하기 위해 IP 주소 회전, 지연을 사용하고 이러한 문제를 자동으로 처리하는 크롤링 API를 사용하는 것과 같은 기술을 사용할 수 있습니다.
웹 사이트에서 데이터를 크롤링하는 방법은 로그인해야합니까?
웹 사이트에서 데이터를 크롤링하려면 로그인해야합니다. Puppeteer를 사용할 수 있습니다. 인형극은 로그인 양식을 작성하여 제출하여 로그인 프로세스를 시뮬레이션 할 수 있습니다. 로그인하면 원하는 페이지로 이동하여 데이터를 크롤링 할 수 있습니다.
크롤링 된 데이터를 데이터베이스에 저장하는 방법은 무엇입니까?
데이터를 크롤링 한 후 선택한 데이터베이스의 데이터베이스 클라이언트를 사용할 수 있습니다. 예를 들어 MongoDB를 사용하는 경우 MongoDB Node.js 클라이언트를 사용하여 데이터베이스에 연결하고 데이터를 저장할 수 있습니다. 페이징으로 웹 사이트에서 데이터를 크롤링하는 방법은 무엇입니까?
페이징이있는 웹 사이트에서 데이터를 크롤링하려면 루프를 사용하여 페이지를 탐색 할 수 있습니다. 각 반복에서 현재 페이지에서 데이터를 크롤링하고 다음 페이지 버튼을 클릭하여 다음 페이지로 이동할 수 있습니다.
무한 스크롤이있는 웹 사이트에서 데이터를 크롤링하는 방법은 무엇입니까?
무한 스크롤이있는 웹 사이트에서 데이터를 크롤링하려면 꼭두각시를 사용하여 스크롤을 시뮬레이션 할 수 있습니다. 루프를 사용하여 새 데이터가 더 이상로드되지 않을 때까지 계속 아래로 스크롤 할 수 있습니다.
웹 크롤링에서 오류를 처리하는 방법은 무엇입니까?
오류 처리는 웹 크롤링에서 중요합니다. Try-Catch 블록을 사용하여 오류를 처리 할 수 있습니다. 캐치 블록에서 오류 메시지를 기록하여 문제를 디버깅하는 데 도움이됩니다.
ajax를 사용하여 웹 사이트에서 데이터를 크롤링하는 방법은 무엇입니까?
ajax를 사용하는 웹 사이트에서 데이터를 크롤링하려면 Puppeteer를 사용할 수 있습니다. 인형극은 Ajax 호출이 완료 될 때까지 기다린 다음 데이터를 가져올 때까지 기다릴 수 있습니다.
node.js에서 웹 크롤링 속도를 높이는 방법은 무엇입니까?
웹 크롤링 속도를 높이려면 병렬 처리와 같은 기술을 사용하여 다른 탭에서 여러 페이지를 열고 동시에 데이터를 잡을 수 있습니다. 그러나 너무 많은 요청으로 웹 사이트에 과부하하지 않도록주의하십시오. 이로 인해 IP가 금지 될 수 있습니다.
Captcha를 사용하여 웹 사이트에서 데이터를 크롤링하는 방법은 무엇입니까?
CAPTCHA를 사용하는 웹 사이트의 크롤링 데이터는 어려울 수 있습니다. 보안 문자를 해결하기 위해 API를 제공하는 2captcha와 같은 서비스를 사용할 수 있습니다. 그러나 어떤 경우에는 불법이거나 부도덕 할 수 있습니다. 항상 웹 사이트 서비스 약관을 존중하십시오.
위 내용은 Node.js의 웹 스크래핑의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!