inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기

[ 여기서 잠깐! ] 파이썬 쓰레드(Threading) 알아보기

선생님 질문 있습니다!

178

통치꽁조림

작성한 질문수 2

0

안녕하세요 제가 만들어본 코드에서 도저히 안되는 부분이 있어서 질문 남깁니다..

1. 첫번째 클래스에 있는 QtextBrowser에 현재상태가 표시되게 하고 싶은데 안됩니다...

전역변수에서 값을 받는건 되는거 같은데 두번째 클래스에서 첫번째 클래스로 값을 보내는 건 안되는 것 같더라구요..

2. 다른 방법으로 현재 상태가 어떻다! 표시할 수 있는 방법은 없나요?

3.오류로 인한 PyQt5 창 닫는 건 어떻게 멈출 수 있을까요?

 

구글링 많이 해봤는데....도와주십시오...ㅠㅠㅠ

import sys
from PyQt5.QtWidgets import *
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import sys
import time
import pyperclip
from PyQt5.QtCore import *

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.Qline = QLineEdit()

        self.Qline1 = QLineEdit()
        self.Qline1.returnPressed.connect(self.append_text)

        self.Qline2 = QLineEdit()
        self.Qline2.returnPressed.connect(self.append_text1)

        self.Qline3 = QLineEdit()
        self.Qline3.returnPressed.connect(self.append_text2)
        
        self.Browser = QTextBrowser()
        self.Browser.setAcceptRichText(True)
        self.Browser.setOpenExternalLinks(True)

        self.Browserr = QTextBrowser()
        self.Browserr.setAcceptRichText(True)
        self.Browserr.setOpenExternalLinks(True)

        self.Browser1 = QTextBrowser()
        self.Browser1.setAcceptRichText(True)
        self.Browser1.setOpenExternalLinks(True)

        self.Browser2 = QTextBrowser()
        self.Browser2.setAcceptRichText(True)
        self.Browser2.setOpenExternalLinks(True)

        self.Browser3 = QTextBrowser()
        self.Browser3.setAcceptRichText(True)
        self.Browser3.setOpenExternalLinks(True)

        self.label1=QLabel('아이디:')
        self.label2=QLabel('패스워드:')
        self.label3=QLabel('주소:')
        self.label4=QLabel('')
        self.label6=QLabel('주소 입력 후 Enter')
        self.label7=QLabel('')
        self.label8=QLabel('')
        self.label9=QLabel('검색어 :')

        self.clear_btn = QPushButton('Clear')
        self.clear_btn.pressed.connect(self.clear_text)

        self.clear_btn2 = QPushButton('Clear')
        self.clear_btn2.pressed.connect(self.clear_text2)

        self.clear_btn3 = QPushButton('Clear')
        self.clear_btn3.pressed.connect(self.clear_text3)
        
        self.start = QPushButton('Start'self)
        self.start.clicked.connect(self.start_text)

        grid = QGridLayout()
        self.setLayout(grid)

        grid.addWidget(self.label100)
        grid.addWidget(self.Qline01)
        grid.addWidget(self.label210)
        grid.addWidget(self.Qline111)
        grid.addWidget(self.Browser31)
        grid.addWidget(self.Browserr41)
        grid.addWidget(self.clear_btn51)

        grid.addWidget(self.label460)
        grid.addWidget(self.label370)
        grid.addWidget(self.Qline271)
        grid.addWidget(self.label681)
        grid.addWidget(self.Browser191)
        grid.addWidget(self.clear_btn2101)


        grid.addWidget(self.label8130)
        grid.addWidget(self.label9140)
        grid.addWidget(self.Qline3141)
        grid.addWidget(self.Browser2151)
        grid.addWidget(self.clear_btn3161)
        grid.addWidget(self.label7170)
        grid.addWidget(self.start181)
        grid.addWidget(self.Browser3191)

        self.setWindowTitle('로그인 해봅시다!')
        self.setGeometry(300100400500)
        self.show()

    def append_text(self):
        text = self.Qline.text()
        text1 = self.Qline1.text()
        self.Browser.append(text)
        self.Browserr.append(text1)
        self.Qline.clear()
        self.Qline1.clear()

    def append_text1(self):
        text2 = self.Qline2.text()
        self.Browser1.append(text2)
        self.Qline2.clear()

    def append_text2(self):
        text3 = self.Qline3.text()
        self.Browser2.append(text3)
        self.Qline3.clear()

    def clear_text(self):
        self.Browser.clear()
        self.Browserr.clear()

    def clear_text2(self):
        self.Browser1.clear()

    def clear_text3(self):
        self.Browser2.clear()

    def start_text(self):
        self.Browser3.setText("검색 시작!")
        self.worker = WorkerThread()
        self.worker.start()
        global a
        a = self.Browser.toPlainText()
        global b
        b = self.Browserr.toPlainText()
        global c
        c = self.Browser3

class WorkerThread(QThreadQWidget):
    def run(self):
        self.actions
        ppap = a.split('\n')
        ppap2 = b.split('\n')
        i = 0
        while i < len(ppap):
            driver = webdriver.Chrome(executable_path=r'C:\\newdongwoo\\chromedriver.exe')
            driver.get("https://nid.naver.com/nidlogin.login?svctype=262144&url=https%3A%2F%2Fnid.naver.com%2Fmobile%2Fuser%2Fhelp%2FnaverProfile.nhn%3Flang%3Dko_KR")
            login_btn = driver.find_element_by_id('log.login')
            tag_id = driver.find_element_by_name('id')
            tag_pw = driver.find_element_by_name('pw')
            tag_id.clear()
            tag_id.click()
            c.setText("이 코드에서 값을 못 보내는 듯 합니다..")
            pyperclip.copy(ppap[i])
            tag_id.send_keys(Keys.CONTROL'v')
            time.sleep(1)

            tag_pw.click()
            pyperclip.copy(ppap2[i])
            tag_pw.send_keys(Keys.CONTROL'v')
            time.sleep(1)

            login_btn.click()
            time.sleep(2)        
            i += 1
                
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

python 웹-크롤링

답변 2

0

통치꽁조림

넵 파이참으로 확인해보겠습니다. 감사합니다!^^

0

좋은사람

안녕하세요. 

열심히 하시네요 지금 소스코드 상으로는 큰 문제는 없어보이는데

디버깅을 해봐야 될 것 같습니다.

검색 후 pycharm 무료 버전 등으로 실행하셔서 로그를 살펴보시는 것을 추천드립니다.

아직까지 pyqt 오류로 갑자기 닫히는 원인은 운영체제 및 파이썬 버전과도 영향이 있어 막기는 쉽지 않습니다.

현재 예제에서 error 발생

0

365

3

유튜브 동영상 다운로드

0

1445

2

Atom 에디터 관련

0

337

1

위시켓 폼데이터

0

274

1

스케줄러 사용 관련 질문 드립니다

0

627

1

selenium 에러

0

427

1

Progress bar 쓰레드 관련

0

489

1

Install Package 관련 문의

0

328

1

tkinter 샘플 코드 실행 오류 건

0

1266

1

4-7-6 네이버 & 카카오 주식 정보 가져오기

0

380

1

네이버자동로그인_by_selenium

0

875

1

위시캣 로그인 처리 및 크롤링 질문

0

343

1

2-8-1 네이버이미지 크롤링 질문

1

604

3

li:nth-of-type 질문

0

350

2

에러가 뜨는데 잘 모르겠어요ㅠ

0

401

2

Install Packages 항목이 안보이는 이유가 뭘까요?

0

400

2

환경변수 Path 설정 방법

0

631

1

웹 브라우저 없는 스크랩핑 및 파싱 실습(1) - 인프런

0

333

1

웹 브라우저 없는 스크랩핑 및 파싱 실습(1) -git주소

0

472

3

download2-8-1. py질문

0

202

1

ip 차단 당하는 거 같은데 아무리 랜덤주고, sleep 줘도 안 되는데 다른 방법 더 있을까요??

0

641

1

인프런 환경이 바뀌어서 제나름대로 하는데

0

195

1

다시올려주신 예제파일로하는데

0

189

1

아직도 에러가뜨나보네요?

0

583

1