yeo72.devlog

[Python] 프탁봇 - 업데이트 시 표시하기 본문

Project

[Python] 프탁봇 - 업데이트 시 표시하기

짱이08 2022. 3. 5. 20:05

 

프탁봇은 지금 마지막 테스트 중이라 다음 게시글에 어떻게 완성되었는지 알려드릴게요

 

참고한 글은 👇

https://hyongdoc.tistory.com/415

https://judy-son.tistory.com/17

 

프라이탁 자체 내에서 새로고침을 계속 하거나 셀레니움으로 프로그램을 돌릴시

로봇인지 아닌지 확인하는 창이 뜨고 반복되면 막히게 됩니다

 

그래서 참고 글의 코드도 지금 실행이 안된다고 해서 로봇여부를 확인하는 우회코드를 추가하였습니다.

try:
    shutil.rmtree(r"c:\chrometemp")  #쿠키 / 캐쉬파일 삭제
except FileNotFoundError:
    pass

subprocess.Popen(r'C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrometemp"') # 디버거 크롬 구동


option = Options()
option.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]
try:
    driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
except:
    chromedriver_autoinstaller.install(True)
    driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
driver.implicitly_wait(10)

driver.get("https://www.freitag.ch/en/f41") ## 자동으로 들어갈 주소 입력

 

#전체 상품 조회
    driver.find_element_by_css_selector('#block-freitag-content > article > section:nth-child(2) > div > div > div > div > div:nth-child(2) > div.container.mx-auto > div > div > a > div').click()

    print(str(datetime.datetime.now()) +' 프라이탁에서 재입고된 아이템이 있는지 확인합니다')
    
    for item in driver.find_elements_by_css_selector('#block-freitag-content > article > section:nth-child(2) > div > div > div > div > div:nth-child(2) > div.container.mx-auto > div > div > div > div.flex.flex-wrap > div:nth-child(n) > div > picture > img'):
        new_src.append(item.get_attribute('src'))

 

전체상품조회 버튼을 추가하지 않으면 이미지소스가 24개만 출력되어 업데이트 여부를 원활하게 확인할 수 없습니다

 

new_src 에 이미지소스를 저장합니다.

append를 사용하였기 때문에 새로고침 될때마다 누적됩니다

 new_items = [x for x in new_src if x not in curr_items]
    print(len(new_items))    
        
    if len(new_items) != 0:
        ft_bot()
        print("재입고 되었습니다")
    
            
    else:
        print("재입고 되지 않았습니다")

 

new_src와 curr_item을 비교하여 새로운 src를 발견하면 new_items에 저장합니다.

 

실행시 새로고침이 반복되면서 프로그램이 잘 돌아 가는 것을 볼 수 있습니다.

중간의 숫자는 정상적으로 실행되는지 확인하기 위해 출력한 결과입니다.

 

 

상세한 코드와 깃허브 주소는 다음 게시글에 작성하겠습니다.

 

기존 글은 작성한 코드와 코드를 사용한 이유에 대해서 대략적으로 작성한 것입니다.