최근 노드 파충류 않는 읽기, 그래서 우리는 그것을 시도, 그것은 전체 프로세스의 기록이다
1, 새 폴더 baidunews
2 입력 NPM 초기화 하에서 상부 신규 폴더 초기화
3, 초기화 후 전체 다운로드 필요한 의존성이다
NPM 명시 설치
NPM 안녕 설치
NPM 슈퍼 에이전트 설치
4, baidunews의 새로운하는 index.js 폴더 파일
5. 파일의 코드를 추가
= (가) 필요 CONST ( '익스프레스'를 표현한다 ); const를 앱 = 익스프레스 (); // ... 송출 서버 = app.listen (3000, 기능 () { 송출 호스트 = server.address () 주소 ;. 송출 포트 = 서버 . .Address () 포트; CONSOLE.LOG는 ( '당신의 응용 프로그램을 실행하는 단계는 http : // 인 % S %의 S' , 호스트, 포트); }); / * * * 설명] - 인 라우팅 * / // 때는 GET 요청에 http : // 로컬 호스트 : 3000, 비동기 함수에서 나중에 app.get ( '/', 비동기 (REQ, RES, 다음) => { res.send (HotNews) }) // 필요한 타사 패키지의 도입 는 슈퍼 에이전트 = CONST ( '슈퍼 에이전트'을 필요로 ) 송출 HotNews = []; // 핫 뉴스 Localnews이 = []하자; // 지역 뉴스 / * * *하는 index.js * [설명] - 사용 superagent.get () 메소드 액세스 바이두 뉴스 * / superagent.get ( 'http://news.baidu.com/').end((err, RES) => { IF (ERR) { // 액세스가 실패하거나 경우 오류가이 선을 발생 여기에 -을 console.log ( '핫 뉴스 가져 오기에 실패 $는 {}`ERR) } 다른 { // 성공적인 방문 페이지 요청 http://news.baidu.com/가 반환 된 데이터가 RES에 포함됩니다 // 기어 핫 뉴스 데이터 hotNews =getHotNews (RES) } }); / * * *하는 index.js * [설명] - 페이지 핫 뉴스 크롤 * / // 도입에 필요한 타사 패키지 CONST는 = 힘내라는 ( '힘내라'을 필요로 ) 송출의 getHotNews = ( RES)은 => { HotNews하자 = []; // 액세스 성공을 요청 http://news.baidu.com/ 페이지 데이터가 포함된다 res.text 반환. / * 사용 안녕 모듈 cherrio.load () 메소드, 함수 HTMLDocument의에 매개 변수로 페이지 요소를 얻기 위해 나중에 유사한 jQuery를 $ (selectior) 방식으로 사용할 수 * / 송출의 $ = cheerio.load (res.text) ; // 대상 데이터 요소, 데이터 수집 페이지를 찾을 수 $은 ( 'div에를 # 창 뉴스 - 울 리는') 각 ((IDX, ELE) =>. { //cherrio의 $ ( '선택')에서 각각 ( ) 일치하는 모든 DOM의 요소를 반복하는 데 사용됩니다. // 매개 변수 IDX는 현재 횡단 요소의 인덱스, ELE 편리 DOM 요소가 현재입니다 송출 뉴스 = { 제목 : $ (ELE) 는 .text (), // 뉴스 헤드 라인을 얻을 HREF : $ (ELE) .attr ( 'HREF') // 뉴스 페이지 링크를 얻을 }; hotNews.push (뉴스) // 저장 최종 결과 배열 }); 반환 HotNews을 } ;
6, 현재 파일 폴더에서 명령 줄을 열고 명령 줄을 입력
노드하는 index.js
브라우저에서 7, 액세스 로컬 호스트 : 3000
페이지 크롤링 (8), 표시 데이터