파이썬 크롤링 해서 내 블로그 검색 순위 알아보기
본문 바로가기
파이썬(Python)/파이썬 개발

파이썬 크롤링 해서 내 블로그 검색 순위 알아보기

by Squat Lee 2020. 11. 29.

TV를 보다가 갑자기 "내 블로그가 몇 번째로 검색이 될까?" 하는 궁금증이 생기기 시작했습니다.

 

갑자기 생긴 궁금증은 해결이 될 때까지 저를 가만두지 않았습니다.

 

결국 노트북으로 와서 코딩을 시작했습니다.

 

우선 어떻게 검색을 할 것인지 구상을 하고, 네이버에 직접 키워드를 입력해 보았습니다.

 

우리나라에서 가장 많이 쓰는 네이버 검색창을 기준으로 만들기로 했습니다.

 

제 블로그가 맨 위에 검색이 되네요. ㅎㅎㅎ

 

우선 주소창이 어떻게 바뀌는지 관찰하고, 'F12'를 눌러서 'html'를 살펴보았습니다.

 

생각보다 html 코드가 간단해서 금방 작성할 수 있었습니다.

 

import requests

from bs4 import BeautifulSoup

모듈은 requests와 bs4의 BeautifulSoup 만 있으면 되겠네요.

myblog = 'dotsnlines.tistory.com'

내 블로그가 몇 번째 검색되는지 알기위해 내 블로그 주소를 넣고 'myblog'라는 변수로 지정합니다.

url = 'https://search.naver.com/search.naver?display=10&f=&filetype=0&page=2&query='

keyword = 'vba 음영'

url_a = '&research_url=&sm=tab_pge&start='

url_b = '&where=web'

url은 구조상 4개로 나눴습니다. 엄밀히 말해서 page까지 5개네요.

 

keyword는 제가 검색할 단어를 넣는 변수입니다.

 

for No in range(0,100):

    result = requests.get(url+keyword+url_a+str(No*10+1)+url_b)

    bs_obj = BeautifulSoup(result.content,'html.parser')

 

    div = bs_obj.find('div',class_='api_subject_bx')

    ul = div.find('ul')

    lis = ul.find_all('li')

 

    for num, li in enumerate(lis):

        a = li.find('a')['href']

        blog = a.split('/')

        if blog[2== myblog:

            print(str(No*10+num+1)+'번째로 검색 되었습니다'+str(a))

for문을 써서 1000 page 까지 검색을 하고, 각 태그를 순서대로 뽑아 냈습니다.

 

각 페이지별로 li 태그 속의 href 속성을 가져오고 제 블로그의 주소와 비교해서 같으면 몇 번째로 검색이 되었는지 프린트 합니다.

 

print('검색이 완료 되었습니다.')

 천개의 검색항목을 다 검색하면 완료되었다고 프린트 됩니다.

 

이제 한 번 실행시켜 볼까요?

역시나 검색이 잘 되네요. ㅎㅎㅎ

 

생각보다 너무나 간단하게 만들었네요. 우리 초딩아들도 할 수 있겠어요.

 

다음 포스트에는 이번에 만든 코드를 가지고 실행파일(exe)을 만들어 보겠습니다.(우리 마눌님도 사용하셔야 하기 때문에...)

 

혹시나 파이썬이 궁금하시면 비전공자 비관련직 40대 컴맹아저씨의 눈 높이로 제 블로그에 하루에 하나씩 공개되오니 참고하세요.

 

←블로그 좌측메뉴 파이썬 코너에 정리해 두었습니다.

 

전체 코드는 아래와 같습니다.↓

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import requests
from bs4 import BeautifulSoup
 
myblog = 'dotsnlines.tistory.com'
 
url = 'https://search.naver.com/search.naver?display=10&f=&filetype=0&page=2&query='
keyword = 'vba 음영'
url_a = '&research_url=&sm=tab_pge&start='
url_b = '&where=web'
 
for No in range(0,100):
    result = requests.get(url+keyword+url_a+str(No*10+1)+url_b)
    bs_obj = BeautifulSoup(result.content,'html.parser')
 
    div = bs_obj.find('div',class_='api_subject_bx')
    ul = div.find('ul')
    lis = ul.find_all('li')
 
    for num, li in enumerate(lis):
        a = li.find('a')['href']
        blog = a.split('/')
        if blog[2== myblog:
            print(str(No*10+num+1)+'번째로 검색 되었습니다'+str(a))
 
print('검색이 완료 되었습니다.')
cs
728x90
반응형

댓글