Python/Crawling

의문점 해결(최저가 알림 봇 만들기_최종)

hihih 2021. 9. 15. 03:28
728x90

 

 

2021.09.11 - [Python/Crawling] - 특정 상품 가격 크롤링(+추가 기능)

2021.09.12 - [Python/Crawling] - 특정 상품 가격 크롤링(+추가 기능) 이후 궁금증

 

 

 

list index out of range 오류가 뜬 이유

 

 

가끔씩 웹페이지 상단에 '광고'가 뜨는데 광고가 떴을 때,

product = soup.select("div.name")

 을 하게 되면, '광고'까지 크롤링이 되어버린다.

 


그러다보니, 광고까지도 크롤링이 되면, product는 37개가 수집됐는데, price는 36개라서

list index out of range 에러가 뜬 것이었다.

 


css 선택자를 더 자세히 작성해주면 광고를 걸러낼 수 있지만 광고에서 최저가가 나오는 경우가 있기 때문에

살짝(?)만 자세히 적어 에러는 뜨지 않고 광고는 뜨게끔 작성했다. 

product = soup.select("div.descriptions-inner > div.name")

 

* 기존에 작성했던 글에서도 위 코드로 수정 완료했다.


for 문을 상품명, 가격, 링크를 같이 돌리기

 

기존에는 상품명을 가지고 for문을 돌렸는데

상품명, 가격, 링크가 포함되는 범위가 큰 css 선택자를 작성한 변수 full을 이용하여 for문을 돌렸다.

 

 


.text와 .string 차이

 

요소의 '내용'으로 또다른 요소가 들어가 있는 경우

.string을 썼을 때에 에러가 나거나, 혹은 None이 출력


text 를 쓰게 되면, 요소의 '내용'으로 또다른 요소가 들어가 있는 경우에도, 요소의 내용 중 '문자열'만 출력
→ .text 로만 사용해도 무방

 


라인 단톡방_ 최종 알림 봇

해당 파일이 오류 없이 실행되는 것을 보고 api를 이용해 작성했다.

 

4,000원대가 나오면 해당 상품 상세페이지 링크로 이동

 

예시

 

 

 

 

 

 

 

728x90