음 자유 주제로 서버 클라이언트 구조로 크롤링해서 프로젝트를 진행하라 하셨다...
몇일동안 고민해본 결과 평소에 생각하던 아이디어까지 일단 적어보면
1. 중간, 기말 고사 문제 구글에서 찾아서 보여주기 - 단원,키워드 검색시 문제들을 보여주는 것이다.
2. 넷플릭스 볼만한것 블로그들 추천 종합해서 추천 해주기 - 구글에 넷플릭스 추천 목록 찾아서 꽤나 추천율이 높은 것을 리스트로 추천해주는 것이다. 아니면 제목 입력하면 구글 블로그들 내가 종합해서 추천 점수 매겨주는거임. 후자로 할듯 일단은 전자는 내가 넷플릭스 영화 목록을 못찾았다. 그래서 영화나 드라마 제목 입력하면 구글에 내가 대신 검색해서 블로그들이 얼마나 추천해주는지 나만의 방식으로 평가해주는것임 !ㅎㅎ.
3. 아마존 블랙 프라이 데이 할인 적용시 알람 주기 - 말 그대로인데 이건 웹으로 구현해야 하는 문제로 보류했다.
여기서 2번을 생각했다.
일단
%EB 이런게 문자열 인코딩된거 같아서 찾아 보니
https://stackoverflow.com/questions/21477986/url-encoding-in-google-chrome
이거다 내가 검색할 url을 위에 캡쳐 처럼 입력하고 요청하기 전에 utf-8로 인코딩해서 get request하면 될거 같다.
주소 입력하는 html 파일이랑, 그걸 크롤링해오는 php 파일은 이미 있다.
html 파일에는 개인정보가 있어서..학번; 그냥 복붙 했다.
<HTML>
<BODY>
<FORM method ="POST" action="웹 크롤러.php가 있는 경로를 쓰세용/WebCrawler.php">
Type in your http address : <INPUT NAME = "addr"><p>
<INPUT TYPE = "submit">
</FORM>
</BODY>
</HTML>
이렇게 브라우저 화면이랑 밑에는 text로 받는다 근데 img 태그랑 a 태그만 받아서 내가 원하는 "브레이킹 배드" + "넷플릭스 추천" 이게 안보이는듯 하다. 나는 하나의 rc 클래스 밑에 넷플릭스 "영화 추천" 그리고 "브레이킹 배드" 이 두 단어가 함께 있으면 갯수를 셀려고 했다.
이제 내가 할 일은 WebCrawler.php에서 원하는 클래스를 뽑고 거기서 여기서 디코딩해서 갯수를 세면 된다. 내가 생각한 평가 기준은 구글로 "제목" and "넷플릭스 추천" 이렇게 검색 했을때 앞에 10페이지에서 몇개나 나오나 이걸 점수로 매길려고 했다. 그리고 점수에 따른 평가를 사전에 저장해 놓고 보여줄려고 했음. 지금 get으로 페이지 넘어가는 방법도 알아내야 되네.
페이지 넘기는 방법은 &start=10 이게 2번째 페이지고 &start=20 이게 3번째 페이지. 이런식으로 넘겨야 한다.
넷플 영화 리스트만 있으면 mysql에 넣고 순위 매기는 식으로 해볼만 할거 같다. 일단은 단일 항목에 대한 것 먼저 해보자.
이제 아래 html을 파싱 했다.
이제 페이지를 넘기면서 여기서 "추천"이 몇개 나타나는지 세어 보면 된다.
하 그래서 php에서 strpos를 이용해서 비교해보려 하는데 진짜 안된다. 내 추측은 인코딩 문제 같은데
28번째 줄에서 mb_conver_encoding를 사용해서 이상하게 $element를 아무리 utf-8로 컨버팅 해도 안된다. 그래서 찾아보니까 utf-8은 ascii의 확장이라서 변환 해도 똑같다고 하는데 (무슨말인지 정확히는 모르겠다. 한번 다시 제대로 공부해 봐야겠다.)
그래서 나는 '브레이킹 배드'를 고치려 안하고 앞에 html의 dom 객체들을 인코딩 해보려 했는데, 답은 ! '브레이킹 배드'를 ascii로 바꾸니까 됬다. ㅋㅋ 내 추측에는... strpos가 ascii 인코딩 된 문자열끼리만 확인해주는거 같다. (그럼 방금 해도 똑같다는건 뭔소리지..;) 먼가 함수마다 특정 인코딩 된 문자열만 할 수 있는게 있는건지, 아니면 데이터끼리 인코딩을 못 맞춰줘서 그런지 아직 잘 모르겠다. mb_substr보고 뭔가 힌트를 얻긴했다.
'잡다한 프로젝트' 카테고리의 다른 글
인터넷 프로그래밍 크롤링 과제3 (부분 완성) (0) | 2019.12.22 |
---|---|
Cuda gpu 프로그래밍 공유 메모리 이용한 행렬의 곱셈 (0) | 2019.12.21 |
인터넷 프로그래밍 크롤링 과제 2편 (php에서 잘 안된 내용이 무엇인지 해결 정리.) (0) | 2019.12.20 |