php

스크래퍼 제작하기

hojomu 2023. 8. 17. 11:18

curl / html 문법으로 get / post 방식의 request를 해서 데이터를 모아보자.

 

1. CrawlData.php

사용할 문서를 require로 불러오고 Class를 인스턴스 했다.

composer로 다운받은 guzzle, css-selector를 사용하기 위해 vender 에 있는 autoload.php도 불러왔다.

 

 - 일반 get 방식

주가와 관련된 데이터는 휴일에는 갱신되지 않기 때문에, 날짜를 확인하는 함수를 먼저 실행시키고

url로 html을 불러온 다음, css-selector로 원하는 데이터의 경로를 특정할 수 있도록 제작했다.

 

 - curl get 방식

날짜 확인하는 부분이 생략되었지만 호출 부분에서 일반 get 방식과는 차이가 없다.

 

 - 모은 데이터들을 하나의 형태로 만들어서 DB에 저장할 것이다.

 

2. GetCrawler.php

 - GetCrawler 클래스는 Css-SelectorConverter를 사용할 수 있도록 선언했다.

Css-Selector를 사용함으로써, Dom 객체화 한 HTML 의 특정 요소를 찾고 싶을 때, Css에서 찾는 방법으로 경로를 지정하면, Css-Selector가 Dom 경로로 변경해서 원하는 요소를 찾을 수 있도록 도와준다

 

 - html 을 불러오는 함수, header에 원하는 형태의 데이터를 실어서 보낼 수 있다.

 

 - html String 데이터를 Dom 객체에 담고, cssSelector를 활용해서 원하는 요소를 선택했다.

 

 - curl를 활용해서 get 방식의 request를 요청했다.

 

 - 현재 날짜 기준 -1 일의 데이터를 요구하셨기 때문에, 다음과 같이 날짜를 체크하는 함수가 추가되었다

 

3. PostCrawler.php

Json 형태의 데이터를 request의 body에 담아 보내기 위해서 GuzzleHttp의 Client를 선언했다.

 - client를 활용해서 데이터를 요청하고 html을 string 형태로 리턴한다.

 - 데이터를 사용하기 좋게 array 형태로 추출했다

 - body에 넣을 데이터를 생성하고, json형태의 데이터를 구성했다.

 

결과물