INSPECT
Beautiful Soup를 이용한 Parsing 본문
[Beautiful Soup를 이용한 Parsing]
Beautiful Soup를 이용해서 네이버,다음의 실시간 검색어를 파싱해보았다.
먼저 네이버를 타겟으로 정하고 소스를 살펴보았다.
코드를 들여다보면 실시간 급상승 검색어 부분의 ol id가 realrank로 되어있는 것을 알 수 있었다.
realrank부분만 따로 떼어보기 위해 스프의 find_all메소드를 사용하였다.
ol태그의 id부분이 realrank인 부분만을 떼어내는 코드이다.
여기서 rank에는 리스트형태로 저장된다. 따라서 for 반복문을 통해 출력했다.
떼어내서 보면 실시간 검색어들이 쭉 보인다. 하지만 이런식으로 떼어낸 것은 리스트의 하나의 항목에 불과하다. 다른방법을 사용하기로 했다.
소스를 살펴보니 ol이라는 항목은 실시간 검색어 부분에만 존재했다. 따라서 ol태그 중에 a태그 부분을 찾아서 lstr에 하나씩 집어넣었다.
그리고 lstr 리스트에 있는 항목들 중 text만을 출력해보았다.
하지만 이런식으로 출력하면 검색어 뒤에 상승이러던지 new라는 특징이 표시되고 그 뒤에 상승한 항목은 몇계단 상승했는지 숫자가 나온다. 따라서 다른방법을 찾아야 했다.
a태그의 바로옆에 실시간 검색어 항목이 나온다 이것을 이용해 위와같은 코드를 만들었다. title에 ol의 li항목들을 리스트로 저장한 뒤 각각의 li항목들에 대해 next_element 를 이용해서 a태그의 바로 옆항목을 출력했다.
실시간 검색어들만 나오긴 하지만 뒤에 ...으로 나와 제대로 보기 어렵다. 역시 제대로 보려면 a태그 안의 title항목을 뽑아내야했다.
태그안의 항목의 값을 출력하는 법을 알고나니 쉬웠다. 위처럼 a태그의 title항목값을 출력하려면 a['title'] 처럼 써주면된다.
깔끔하게 잘 뽑아져나오는 것을 볼 수 있다.
[NAVER, DAUM 실시간 검색어 Parsing]
위 내용을 이용해서 네이버와 다음 실시간 검색어를 파싱해보았다.
위와 같이 네이버와 다음 둘 중 검색엔진을 선택하게 한 후 선택된 검색엔진의 실시간 검색어를 파일로 저장하는 코드를 짜보았다.
다음도 네이버와 비슷한 구조라 파악하기 쉬웠다.
화면에 출력해주는 코드와 비슷하지만 조금 다르다. .format을 이용해 range에서 반복되는 숫자값들을 출력해준다. 한글을 출력해 파일로 저장하기 위해서 encode('utf-8')을 통해 인코딩해주는 과정이 필요했다.
네이버와 다음 중 선택을 받는다. 네이버를 선택했다.
research.txt 파일에 위와 같이 실시간 검색순위가 저장되었다.
이번에는 다음을 선택해보았다.
마찬가지로 다음의 실시간 검색순위가 저장되었다.
사실 네이트도 파싱해보려했는데 실시간 검색어부분의 소스가 안보이게 막혀있었다. 아쉽게 하지 못했다.
참고 : 뷰티플스프 문서http://coreapython.hosting.paran.com/etc/beautifulsoup4.html
, SUSPECT님
'Python' 카테고리의 다른 글
[PEfile Module] 사용 (0) | 2016.05.05 |
---|---|
[XML parsing] AndroidManifest.xml 파싱 (0) | 2016.01.23 |
[os.walk] 특정 디렉터리의 모든 파일명 알아오기 (0) | 2016.01.23 |
pyautoit을 활용한 자동설치 (0) | 2016.01.17 |
복사(copy) (2) | 2016.01.13 |