본문 바로가기
Information

네이버블로그 상위 랭크 10등까지 제목과 링크 가져오기 - 파이썬 웹크롤링

by 정티그로 2021. 5. 6.

네이버에 특정 키워드를 검색한 후 상위 랭크 10등에 있는 블로그의 정보(제목, 링크)를 가져오는 코드를 파이썬을 통해 작성해봤습니다.

 

목표 : 특정 키워드 검색 시 뷰탭에서 1위부터 10위 블로그들의 제목과 링크 가져오기
결과 : [블로그 제목], [링크]

 

'공인중개사'라는 키워드를 검색했을 경우, 다양한 블로그가 등장합니다.

 

상위 노출 블로그를 분석하려고 하는 분들에게 유용하지 않을까 라는 생각으로 작성을 해봤는데요. 

 

파이썬으로 작성한 웹크롤링 코드부터 보여드리겠습니다.

 

HTML의 정보를 뽑아내기 위해 'BeautifulSoup'이라는 파이썬 라이브러리를 사용했습니다. 

 

import requests
import re
from bs4 import BeautifulSoup

#키워드 : 공인중개사
url = "https://search.naver.com/search.naver?where=view&sm=tab_jum&query=%EA%B3%B5%EC%9D%B8%EC%A4%91%EA%B0%9C%EC%82%AC"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"}
res = requests.get(url, headers=headers)
res.raise_for_status()
idx = 0

soup = BeautifulSoup(res.text, "lxml") # 가져온 문서를 lxml 파서를 통해서 BeautifulSoup객체로 만듬. soup에 모든 정보가 들어있음.

gongin = soup.find_all("div", attrs={"class":"total_wrap api_ani_send"})

for gongins in gongin:
    title = gongins.find("a", attrs={"class":"api_txt_lines total_tit"}).get_text()
    link = gongins.a["href"]
    p = re.compile("cafe")
    m = p.search(link)

    if m:
        #print("카페 제외")
        continue
    print(title)
    print(link)
    idx = idx + 1

    if idx > 9 :
        break

 

url 변수에는 여러분이 원하는 주소를 넣어주면 됩니다. 

 

파이썬을 검색했을 때 나오는 블로그의 정보를 얻고 싶다면, 검색 후 '뷰탭'의 링크를 url에 넣어주면 됩니다.

 

    if m:
        #print("카페 제외")
        continue

if문을 통해 카페 검색 결과는 제외시켰습니다. 카페 검색 결과 제외는 '정규식'을 이용했습니다. 링크에 'cafe'라는 문자가 있을 경우, continue를 이용해 for문을 탈출합니다. 

 

네이버 검색창에 키워드를 넣고 검색한 후 개발자 도구를 켜서 태그를 확인하는 것이 포인트입니다.

블로그 제목을 분석해보면, 검색 결과 전체는 div태그로 묶여 있으며, 하나의 제목에는 class가 'api_txt_lines total_tit'인 것을 확인할 수 있습니다. 이 부분을 get_text() 함수를 이용해 텍스트만 가져오면 제목을 가져올 수 있습니다.

 

링크는 link = gongins.a["href"]를 이용해 가져오는데, gongins의 a태그 안에 href를 가져옵니다. 

 

이렇게 두 개의 값(제목, 링크)를 얻어왔으면, print를 이용해 출력하면 끝나는 것이죠.

 

결과

네이버 검색 결과는 시간이 지남에 따라 바뀔 수 있으니, 여러분이 코드 실행을 했을 때와 제 결과가 다를 수 있습니다. 네이버 블로그와 포스트가 섞여 있는 것을 볼 수 있습니다. 카페 글은 제외시켰기 때문에, 나오지 않았네요.