마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 웹페이지 파싱

0 추천
안녕하세요. 저는 안드로이드 스튜디오를 공부하고 있는 학생입니다.

 인터넷 사이트에서 제가 원하는 정보를 끌어와 개발중인 안드로이드 어플리케이션으로 가져오는 방법을 찾고 있습니다.

 CGV나 메가박스 같은 영화관 이벤트 홈페이지에서, 각종 이벤트 정보를 텍스트와 이미지 파일로 받아와 안드로이드 스튜디오을 이용하여 어플리케이션의 imageview에 보여주고 싶습니다.

 정보를 끌어오는 '파싱' 단계를 위해서는 홈페이지 사이트에서 xml, html 등으로 변환한 후 안드로이드 스튜디오에서 처리를 해야한다고 알고있습니다. 그러나 사이트를 xml로 변환하려면 유료로 관련 프로그램을 구매해 사용해야한다고 들었습니다.

 위에서 말씀드린 대로 제가 원하는 기능을 사용하기 위한 다른 방법이 있는지, 또는 홈페이지를 xml로 변환하는 간단한 방법이 있는지 알고싶습니다.

 감사합니다.
sommm (120 포인트) 님이 2017년 7월 1일 질문

1개의 답변

0 추천
먼저 html을 xml로 바꾸는 것은 오픈소스가 많아 보입니다.

사실 웹페이지를 가져와서 (Crawl) Parsing을 하는 것은 정규식으로도 가능합니다. 굳이 xml로 바꿀 필요가 있느냐 하면, 제가 볼 때는 없습니다. OKHttp 와 같은 것으로 Page Source를 String으로 가져와서,
원하는 부분을 IndexOf 같은 함수로 찾아서 데이터를 가져오면 됩니다.

Web Page Crawling의 문제점 하나는 웹페이지의 디자인이나 html 구조가 바뀌면 로직을 다시 만들어야 한다는 것입니다.

두번째 문제는 웹페이지가 Crawling을 허용하지 않는다고 하면, 가져가는 것은 불법입니다.

세번째, Crawling을 못하게 막는 다양한 방법이 있다는 것입니다. 예를들면, 페이지 소스를 가져오면 다른게 뜰 수도 있습니다. 2~3초 후에 서버에서 redirect하면 다른 방법으로 가져와야 합니다. 등등...

참고: html to xml 컨버터: (테스트는 해 보지 않았습니다. xml 컨버터는 필요없다고 생각합니다.)

https://www.example-code.com/android/htmlToXml_simple.asp
Will Kim (43,170 포인트) 님이 2017년 7월 1일 답변
안녕하세요 위의 질문자분과 똑같은 고민을 하고있는 학생입니다.ㅠ

 OKHttp를 이용하여 페이지 소스를 String으로 가져와서 원하는 부분을 데이터로 가져오면 된다고 하셨는데요,

 제가 원하는 홈페이지에서 마우스 오른쪽 버튼을 눌러 '소스보기'를 누른 후 보이는 코드들이 해당 홈페이지의 html 코드라고 알고 있습니다.
 저는 코드 내에 이미지 url이나 (예를 들면 http://www.~~~~.jpg 등으로 끝나는 이미지 주소) 하이퍼링크로 연동된 url이 있다고 생각했습니다. 제가 원하는 정보가 딱 저 두가지, 이미지와 연동된 사이트 주소 입니다.
 그러나 해당 코드를 찬찬히 읽어본 결과 제가 데이터를 얻어오길 원하는 이미지 파일이나, 해당 이미지를 누르면 이동하게 되는 사이트 url주소 등의 정보를 코드 내에서 찾을 수가 없었습니다.
 그렇다면 OKHttp를 이용하여 페이지 소스를 그대로 string으로 가져와서 데이터를 가져가는 것이 불가능한 것이 아닌가 궁금합니다.
 저 정보들을 가져오기 위한 방법이 또 있을까요.

 사이트 내의 정보를 어떻게 가져와야할지 막막하네요ㅠㅠ
...