파이썬 - 네이버 검색어 크롤링 후 검색 항목 개수 자동 확인
본문 바로가기
파이썬(Python)/파이썬 개발

파이썬 - 네이버 검색어 크롤링 후 검색 항목 개수 자동 확인

by Squat Lee 2020. 12. 1.

지난번 포스트에 내 블로그 검색순위를 찾아보는 프로그램에 이어서 

 

입력하는 검색어에 검색 항목의 개수와 검색되는 항목의 링크를 걸어주는 프로그램 작성법입니다.

 

지난번 포스트의 내용은 생략하겠으니 혹시 궁금하시면 아래 링크를 참고하세요

 

2020/11/30 - [분류 전체보기] - 파이썬 크롤링으로 내 블로그 검색 순위 알아보기 - ui와 실행파일 만들기

 

파이썬 크롤링으로 내 블로그 검색 순위 알아보기 - ui와 실행파일 만들기

지난번에 이어서 크롤링을 통해서 내 블로그가 몇 번째로 검색되는지 확인하는 코드를 작성해 보겠습니다.(지난번 포스트를 못 보셨으면 아래 링크를 참고하세요) 2020/11/29 - [파이썬/Python Project]

dotsnlines.tistory.com

 

우선 UI를 만들어 보겠습니다.

 

저번 포스트에서 만든 UI에 "검색항목 개수"를 아래에 추가했습니다.

 

하이퍼링크를 달기위해 textBrowser를 사용했습니다.

 

for li in lis:
                if li.find('a')['href'in total:
                    break
                else:
                    total.append(li.find('a')['href'])
                    self.textBrowser.append('<a href="'+ li.find('a')['href'+ '">' + li.find('a')['href'+ '/a>')

검색되는 항목의 링크를 리스트로 만들고 추가해서 textBrowser에 넣어 줍니다.

 

qtdesigner는 사용법을 검색하기가 상당히 어렵네요. 한참을 구글링 했습니다. ㅠㅠ

 

self.label_count.setText('검색된 항목의 개수는'+str(len(total))+'입니다')

총 몇 개가 검색 되었는지 label에 표시해 줍니다.

 

막상 포스트에 기록해보니 간단한 것 같네요.

 

프로그래밍은 하나가 막히면 엄청 헤메기 때문에 시간이 얼마나 걸릴지 모르는 것 같아요. 프로그래밍 잘 하는 지인 한명 있었으면 좋겠네요. 물어보게요...

 

실행하면 위와 같이 창이 나타납니다.

 

키워드를 넣고 검색을 해 보면 위와같이 결과가 나옵니다.

 

검색된 항목의 링크도 걸었어요. pyqt를 사용해서 hyperlink를 거는 법을 검색해도 못 찾아서 한참을 고민 했네요.

 

어쨌든 만들어 놓으니깐 울 마눌님이 활용성이 좀 있겠다고 격려를 해 주시네요.

 

내 블로그 검색어를 확인해서 유리하게 변경할 수도 있고, 어떤 항목이 상위에 노출되는지 파악도 쉽네요.

 

제가 마케팅, 광고업계랑 거리가 멀어서 잘 모르지만, 이쪽 업계에서는 수작업으로 이런 일을 한다는 소문을 들었어요...

 

이걸 수작업으로 하다니... 역시 세상에는 대단하신 분들이 많은 것 같아요.

 

크몽에 찾아보니 이런걸 돈 받고 파시는 분들도 많은 것 같더라구요...

 

제건 그 정도 수준이 아니니 그냥 시원하게 모든 코드를 공개하겠습니다.

 

제가 헤메며 만든 코드를 복붙하심 되니 필요하신 분들 가져다 쓰세요~~~~^^

 

나이 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from PyQt5.QtWidgets import *
from PyQt5 import uic
import sys
import requests
from bs4 import BeautifulSoup
 
blog_ui = '.\\blogrank.ui'
 
class MyWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(selfNone)
        uic.loadUi(blog_ui, self)
 
        self.pushButton.clicked.connect(self.pushButtonClicked)
        self.lineEdit.textChanged.connect(self.line_changed)
 
    def line_changed(self):
        self.label_end.clear()
        self.label_count.clear()
        self.textEdit.clear()
        self.textBrowser.clear()
 
    def pushButtonClicked(self):
        url = 'https://search.naver.com/search.naver?display=10&f=&filetype=0&page=2&query='
        url_a = '&research_url=&sm=tab_pge&start='
        url_b = '&where=web'
        myblog = 'dotsnlines.tistory.com'
        keyword = self.lineEdit.text()
 
        total = []
        for No in range(010):
            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:
                    exist = self.textEdit.toPlainText()
                    self.textEdit.setText(exist + str(No * 10 + num + 1+ '번째로 검색 되었습니다' + str(a)+'\n')
 
            for li in lis:
                if li.find('a')['href'in total:
                    break
                else:
                    total.append(li.find('a')['href'])
                    self.textBrowser.append('<a href="'+ li.find('a')['href'+ '">' + li.find('a')['href'+ '/a>')
 
        self.label_count.setText('검색된 항목의 개수는'+str(len(total))+'입니다')
        self.label_end.setText('검색이 완료되었습니다.')
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    Dialog = MyWindow()
    Dialog.show()
    app.exec_()
cs
728x90
반응형

댓글