Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 동등성
- visual studio code
- spring-boot-starter-parent
- hashcode
- 분산락
- Visual Studio Code 파이썬
- GitHub profile
- 프라이탁
- Redisson
- 프라이탁 파이썬
- maven 오류
- 레디스
- Sanner와 BufferedReader의 차이점
- 프라이탁 알림봇
- 리드미 꾸미기
- 깃허브
- 윈도우10에 파이썬 설치
- 깃허브 방문자
- pip업그레이드
- 파이썬 pip
- 알고리즘 입력받는 값
- 깃허브 리드미 꾸미기
- 깃허브 프로필
- Redis
- 파이썬 설치하기
- 깃허브 리드미
- 신규 프로젝트 생성후 빌드시 오류
- 파이썬 설치
- setting.xml
- 깃허브 뱃지
Archives
- Today
- Total
yeo72.devlog
[Python] 프탁봇 - 업데이트 시 표시하기 본문
프탁봇은 지금 마지막 테스트 중이라 다음 게시글에 어떻게 완성되었는지 알려드릴게요
참고한 글은 👇
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에 저장합니다.
실행시 새로고침이 반복되면서 프로그램이 잘 돌아 가는 것을 볼 수 있습니다.
중간의 숫자는 정상적으로 실행되는지 확인하기 위해 출력한 결과입니다.
상세한 코드와 깃허브 주소는 다음 게시글에 작성하겠습니다.
기존 글은 작성한 코드와 코드를 사용한 이유에 대해서 대략적으로 작성한 것입니다.
'Project' 카테고리의 다른 글
[Python] 프탁봇 - 업데이트 된 정보를 텔레그램으로 전송! (0) | 2022.05.12 |
---|---|
[Python] 프탁봇 - 이미지 소스 출력하기 (0) | 2022.02.20 |
[Python] 프탁봇을 만들어보자 (0) | 2022.02.17 |