본문 바로가기
데이터 분석

웹 크롤링 with Python 2장

by ChocoPeanut 2017. 7. 11.

웹 크롤링 with Python 2

 

웹 크롤러라는 이름은 웹을 크롤링하기 때문에 붙여진 이름이다. 그 핵심은 재귀이다. 웹 크롤러는 URL에서 페이지를 가져오고, 그 페이지를 검사해 다른 URL을 찾고, 다시 그 페이지를 가져오는 작업을 무한히 반복한다. 하지만 웹 크롤러를 사용할 때는 반드시 대역폭에 세심한 주의를 기울여야 하며, 타켓 서버의 부하를 줄일 방법을 강구해야 한다.


API는 애플리케이션 프로그래밍 인터페이스로 서로 정보를 공유해야 하는 소프트웨어 사이에서 국제어 구실을 하도록 디자인된 인터페이스이다. API가 요청을 보낼 때는 HTTP를 통해 데이터를 요청하며 API는 이 데이터를 XML이나 JSON 형식으로 반환한다. HTTP를 통해 웹 서버에 정보를 요청하는 방법은 GETPOST가 주를 이룬다. GET은 브라우저의 주소 표시줄을 통해 웹사이트에 방문할 때 쓰는 방법이고 POST는 폼을 작성하거나, 서버에 있는 스크립트에 정보를 보낼 때 사용한다. 응답은 XMLJSON이다. XMLtag의 형식으로 데이터를 보내고 JSON은 딕셔너리 형태로 데이터를 보낸다. JSON 파일과 XML 파일을 비교해보면 JSON 파일이 크기가 더 작아서 유용하게 사용된다.


API를 사용하기 위해서는 key를 사용해야 되는 경우가 많다. 해당하는 API에 대한 명령을 입력한 후 key에 대한 값을 넣어주어야 인증이 되는 것이다.


JSON 파싱 라이브러리는 파이썬의 핵심 라이브러리 일부분이다. jsonimport 하여 json 파일을 우리가 가공할 수 있는 데이터로 만드는 것이다. JSON 객체는 딕셔너리로, JSON 배열은 리스트로, JSON 문자열은 문자열로 변환이 되게 된다.


데이터를 수집하여 출력하는 것도 중요하지만 적절하게 크롤링을 이용하여 수집한 데이터를 저장하는 것도 중요하다. 데이터를 관리하는 방법으로는 3가지가 있는데 데이터 베이스를 이용하는 방법, 파일 스트림을 이용하는 것 또는 이메일이다. 데이터를 받을 때에 중요한 판단 중 하나가 데이터 자체를 받을 것인가 아니면 데이터에 대한 url 링크를 받을 것인가이다. 둘 다 장점과 단점이 있다. 한두 번 이상 실제로 데이터를 보거나 읽는다면 파일을 통해 데이터를 저장하고 그게 아니리면 데이터베이스를 유지하면서 수집을 해야 한다.


대표적인 데이터 저장 방식 중 하나는 CSV 파일이다. 파이썬은 csv 라이브러리를 이용하여 CSV 파일을 쉽게 수정하거나 만들 수 있다. csv의 대표적인 함수로는 writerwriterow가 있다. writer는 쓸 준비를 하는 것이고 writerow는 줄 별로 데이터를 입력해 나가는 것을 의미한다.


MySQL은 가장 널리 쓰이는 오픈 소스 관계형 데이터베이스 관리 시스템이다. 파이썬은 PyMySQL이라는 라이브러리를 사용하여 MySQL과 연결할 수 있게 된다. pymysqlimport 시키고 connect 함수를 사용한다. 이후 cursor를 지정해주면 MySQL과 연동할 수 있는 준비가 다 되었다. execute함수에 인자로 mysql의 명령어를 넣어주게 되면 파이썬에서 mysql을 사용할 수 있게 된다.