Javascript를 사용하여 웹 사이트에서 HTML을 추출하려면 어떻게 해야 합니까?

Do you plan to scrape websites using JavaScript? With the help of the Node.js platform and its associated libraries, you can use JavaScript to develop web scrapers that can scrape data from any website you like.

우리는 기업이 주로 데이터에 의존하는 시대에 처해 있다. 인터넷은 거대한 데이터 원천이고 텍스트 데이터가 가장 중요하다.사회와 상업 연구원들은 그들이 흥미를 느끼는 사이트에서 데이터를 수집하는 것에 흥미가 있다.불행하게도 대부분의 사이트는 데이터 과학자들이 필요한 데이터를 수집하는 데 불편하다.이 때문에 연구원들은 반드시 자동화 수단을 이용하여 스스로 이 데이터를 수집해야 한다.웹 페이지에서 공개적으로 방문할 수 있는 데이터를 자동으로 수집하는 방법을 웹 캡처라고 한다.
웹 스크래퍼는 모든 프로그래밍 언어로 툴링을 개발할 수 있습니다.자바, PHP, 파이톤, 자바스크립트, C/C++, C# 등은 웹 스크립트를 작성하는 데 사용된다.그럼에도 불구하고 웹 스크립트를 개발하는 데 있어서 일부 언어는 다른 언어보다 더 인기가 있다.JavaScript는 일반적인 선택이 아닙니다.최근 몇 년 동안 웹 스크립트를 개발하는 언어로서 점점 인기를 끌고 있다. 이것은 웹 스크립트 라이브러리의 가용성 덕분이다.이 문서에서는 JavaScript를 사용하여 웹 스크래퍼를 개발하는 방법을 보여 드리겠습니다.

노드js--게임 규칙의 변화자


JavaScript는 처음에 웹 페이지에 상호작용과 응답성을 추가하기 위해 전방 웹 개발을 위해 개발되었다.브라우저 외부에서 JavaScript를 실행할 수 없습니다.따라서 Python, 자바, C++를 사용할 수 있기 때문에 백엔드 개발에 사용할 수 없습니다.이것은 두 가지 언어에 정통해야만 전단과 후단 개발을 동시에 진행할 수 있다는 것을 의미한다.그러나 개발자들은 자바스크립트가 완전한 프로그래밍 언어이기 때문에 브라우저 환경에만 국한되어서는 안 된다고 생각한다. 이로 인해 라이언 Dahl은 노드를 개발했다.js.노드js는 크롬의 V8 자바스크립트 엔진을 기반으로 구축된 자바스크립트가 실행될 때의 환경입니다.Node를 사용합니다.js, PHP, 자바, Python처럼 코드를 작성해서 PC와 서버에서 실행할 수 있습니다.이 때문에 많은 개발자들이 자바스크립트를 진지하게 다루어야 할 완전한 언어로 여기고 자바스크립트를 사용하여 백엔드 프로그래밍을 할 수 있도록 많은 라이브러리와 프레임워크를 개발했다.Node를 사용합니다.js, 현재 전단과 후단을 위한 코드를 작성할 수 있는 언어를 사용할 수 있습니다.
JavaScript 개발자는 JavaScript를 사용하여 전체 웹 scraper를 개발할 수 있으며 Node를 사용할 수 있습니다.js에서 그것을 실행합니다.JavaScript와 일부 노드를 사용하여 웹 스크래퍼를 작성하는 방법을 보여 드리겠습니다.js 라이브러리.

설치 및 설정


각 현대 브라우저에 설치된 JavaScript가 실행될 때와 달리 Node를 설치해야 합니다.js는 개발에서 사용할 수 있습니다.Node를 설치할 수 있습니다.js fromthe Node.js official website - Windows 사용자의 파일 크기가 20MB보다 작습니다.노드를 설치한 후js, 명령줄에 다음 코드를 입력해서 설치되었는지 확인할 수 있습니다.
노트
오류 메시지가 반환되지 않으면 노드가 성공적으로 설치되었음을 나타냅니다.노드를 보고 확인할 수도 있습니다.js 프로그램은 설치된 프로그램 목록에 있습니다.설치가 완료되면 웹 캡처를 위해 필요한 라이브러리/모듈을 설치합니다.이 강좌에서 데스크톱에 새 폴더를 만들고 웹 스크립트라고 이름을 붙이는 것을 권장합니다.그런 다음 명령 프롬프트(MS-DOS/명령줄)를 시작하고 다음 명령을 사용하여 폴더를 탐색합니다.
cd 데스크톱/네트워크 스크레이퍼
이제 노드를 설치합시다.웹 스크립트에 사용되는 js 패키지 - 명령 알림을 닫지 마십시오.

  • Axios


  • Axios 모듈은 가장 중요한 웹 캡처 라이브러리 중 하나입니다.이것은 웹 요청을 보내고 응답을 되돌려 주는 브라우저처럼 HTTP 클라이언트입니다.데이터를 가져올 페이지를 다운로드하려면 이 페이지를 사용하십시오.Axios를 설치하려면 다음 코드를 사용합니다.
    npm 설치 axios

  • 건배


  • ChereIO는 Axios에서 다운로드한 HTML 페이지의 DOM을 옮겨다니며 필요한 데이터를 수집할 수 있는 경량 라이브러리입니다.이 문법은 jQuery와 유사하기 때문에, jQuery를 어떻게 사용하는지 알고 있다면, 사용하는데 문제가 없을 것입니다.다음 명령을 사용하여 설치합니다.
    npm 설치 요청

  • 꼭두각시 배우


  • 만약 정적 페이지에서 캡처한다면, 위의 라이브러리에서 이 작업을 완성할 것입니다.그러나 동적으로 내용을 생성하고 자바스크립트 이벤트가 불러오는 페이지에서 내용을 삭제하려고 할 때, Axios는 요청을 초기화할 때만 서버가 보내는 내용을 다운로드하기 때문에 쓸모가 없습니다.JavaScript 이벤트에 따라 컨텐츠를 로드하는 동적 웹 사이트의 경우, 모든 컨텐츠를 로드하고 삭제할 수 있도록 브라우저를 제어하는 브라우저 자동화 도구가 필요합니다.
    npm 설치 인형사

    정적 웹 사이트에서 캡처


    정적 웹 페이지에서 캡처하는 것이 가장 간단하다. 우리가 캡처 시스템을 고려하지 않을 때.정적 웹 페이지의 경우 HTTP 클라이언트(Axios)로 페이지 내용을 요청하면 웹 서버가 HTML로 응답을 되돌려주기 때문이다.그런 다음 ChereIO를 사용하여 DOM을 가로질러 원하는 데이터를 가져올 수 있습니다.다음 예에서, 나는 자바스크립트를 사용하여 https://example.com/에서 h1 태그 안의 텍스트를 추출했다.다음 코드에서, 나는 Axiosto를 사용하여 전체 페이지를 다운로드한 다음, Cheerio를 사용하여 DOM을 수집하고, h1 태그에서 텍스트를 삭제한다.
    constaxios=require(“axios”)
    const cheerio=require(“cheerio”)
    비동기 함수fetchHTML(url)
    const{data} = axios를 기다립니다.가져오기 (URL)
    안녕히 계세요.로드(데이터)
    }
    const$= HTML 가져오기 대기 중("https://example.com")
    //전체 HTML 인쇄
    위문하다.로그(`Site HTML:${$.HTML()}\n\n`)
    //특정 페이지 내용 인쇄
    위문하다.log(`First h1 tag:${$('h1').text()}`)

    동적 사이트 캡처


    동적 사이트는 사이트 관리자에게 준엄한 도전을 제기했다.인터넷상의 사이트는 처음에는 정적 사이트로 개발되었고 상호작용 형식이 거의 없었다.이 사이트들에 대해, 당신이 페이지 요청을 보낼 때, 이 페이지의 모든 내용은 한 페이지에 불러옵니다. 이것은 인터넷 파충류에게 가장 쉽게 잡히는 모델입니다.그러나 동적 사이트가 등장함에 따라 인터넷상의 많은 페이지들이 한 번에 내용을 불러올 수 없다.일부 컨텐트는 JavaScript 이벤트에 따라 다릅니다.만약 네가 이런 자세를 취해 웹 사이트를 잡는다면, 너는 인형사를 사용해야 한다.
    Puppeter는 Chrome의 웹 사이트 액세스를 제어하고 로드할 JavaScript 이벤트를 트리거한 다음 로드할 때 필요한 데이터를 추출할 수 있습니다.너는 인형 배우로 많은 일을 할 수 있다.다음 예에서 코드는 the Fast Five movies from IMDb의 제목과 요약을 삭제했다.너는 인형 배우로 더 많은 일을 할 수 있다.read the Puppeteer documentation here API 및 사용법에 대해 자세히 알아보십시오.
    const puppeter=require(인형 배우);
    비동기 함수collectData()
    const browser = 인형사를 기다리다.발사();
    const page= 브라우저를 기다립니다.newPage();
    페이지를 기다립니다.뒷덩굴
    ("https://www.imdb.com/title/tt1013752/");
    const data = 페이지 대기평가(()=>{
    const title = 문서.질의 선택기(
    "#제목개요위젯>div.vital>
    div.title_block>div>div.titleBar>
    div.title_wrapper>h1“
    ). 내부 텍스트
    const summary = 파일입니다.질의 선택기(
    "#제목개요위젯>
    div.plot_summary_wrapper>div.plot_summary>
    부서 요약 정보 텍스트
    ). 내부 텍스트
    //이 객체는 데이터 변수에 저장됩니다.
    반환
    직함
    요약,
        };
      });
    브라우저를 기다립니다.닫기();
    }
    데이터 수집();

    스크래치 방지 기술에 대한 약간의 주석


    위의 코드를 보아라. 나는 반로봇 시스템을 돌아가는 기술을 가입하지 않았다.이 강좌는 미니멀리즘의 개념적 증명이기 때문이다.사실상, 만약 당신이 자신의 네트워크 스크레이퍼 시스템을 개발하고, 스크레이퍼 시스템을 고려하지 않는다면, 당신의 로봇은 수백 개의 요청 후에 막힐 것이다.웹 사이트가 폐기되고 싶지 않기 때문이다. 웹 사이트는 아무런 가치도 가져오지 않고 오히려 운영 원가를 높일 수 있기 때문이다.이 때문에 그들은 네트워크 캡처와 다른 형식의 자동 접근을 막기 위해 반캡처 시스템을 구축했다.
    사이트에서 사용하는 가장 유행하는 캡처 기술은 IP 추적과 차단, 인증코드 시스템을 포함한다.일부 사이트도 쿠키, 로컬 저장과 브라우저 지문을 사용하여 로봇의 데이터를 방지한다.따라서 프록시를 어떻게 사용하는지, 사용자 프록시 문자열과 다른 제목을 바꾸고, 회전하는지 배우기 위해서 read the Axion documentation 를 사용하시기를 권장합니다.막힌 것을 어떻게 피하는지에 관한 보다 전면적인 문장은 본문How to Scrape Websites and Never Get Blocked을 읽으세요.
    결론
    노드의 발전에 따라.js, 자바스크립트를 무시하는 모든 사람들이 자바스크립트가 다른 프로그래밍 언어와 똑같다는 것을 알게 할 때가 되었다.과거와 달리, 현재는 자바스크립트로 웹 스크립트를 개발할 수 있으며, 브라우저를 실행할 필요가 없다. 이것은 노드의 도움말 아래 서버나 로컬 PC에서 실행될 것이다.Node는 JavaScript의 도움으로 당신이 좋아하는 웹 사이트, Node를 방문할 수 있습니다.jsproxies와 반검증코드 시스템.

    좋은 웹페이지 즐겨찾기