Post

inconsistent use of tabs and spaces in indentation in Python

inconsistent use of tabs and spaces in indentation in Python 에러는 탭이 아니라 띄어쓰기를 했을 경우에 발생한다. 겉보기에는 똑같지만 탭과 띄어쓰기는 다르니까 확인해보고 띄어쓰기나 탭을 지웠다가 다시 탭을 해보면 된다.

    print(line.text)
          ^^^^^^^^^
AttributeError: 'str' object has no attribute 'text'

AttributeError: 'str' object has no attribute 'text'

이건 line 안에 text가 없어서 나는 에러이다. 그냥 line을 써주면 된다.

Post

ModuleNotFoundError: No module named 'pandas' 아나콘다가 깔려 있을 때 해결법

한동안 ModuleNotFoundError 때문에 골치를 앓았다.
분명히 모듈을 설치했는데!!! 설치해서 이젠 업그레이드만 나오는데 왜 자꾸 모듈을 못찾는거냐말이라어ㅏ니러ㅣ자더기ㅏ
환경변수 문제인가 싶어서 건들여봤는데 분명 파이썬 환경변수를 설치 해줬는데도 불구하고

ModuleNotFoundError: No module named

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
미치는 줄 알았다. 그러다가 우연히 아나콘다와 파이썬이 함께 설치되어있을 때
아나콘다의 환경변수 설정 때문에 파이썬 환경변수와 충돌하여 제대로 동작하지 않는다고 알게 되었다.
뭐... 왜 충돌하는진 자세히 모르겠지만 추측해보면
아마 아나콘다 환경변수가 파이썬보다 위에 있어서 아나콘다 가상환경일 때 깔린 곳에서 모듈을 쓰려고 하니 문제였지 않나...싶다...
실제 내 아나콘다, 파이썬 환경변수는 아래와 같았다.

C:\Users\user\anaconda3\Library\mingw-w64\bin
C:\Users\user\anaconda3\Library\bin
C:\Users\user\anaconda3\Scripts
C:\Users\user\anaconda3\Library
C:\Program Files\nodejs\
C:\Users\user\AppData\Local\Programs\Python\Python310

아무튼 아나콘다를 당분간 사용할 일이 없어서 삭제하고 파이썬도 새로 다시 설치했다.
(지금생각해보니 anaconda3 path만 삭제하면 되었던것 같다;;;;)
결과는?
모듈을 찾아서 실행에 성공했다ㅠㅠㅠㅠㅠ!!!
지긋지긋한 No module named  빠이....!
그런데 파이썬을 먼저 설치하고 아나콘다를 설치한 경우

Adding Anaconda to my PATH environment variable

체크를 해제해야한다고 한다.나는 이렇게 해서 다시 깔았는데...
그럼 아나콘다에 문제있는거 아닌가 싶다...
아나콘다 환경설정을 삭제하면 당연히 문제가 있을것 아닌가;;;;
(근데 원래 체크가 안된개 기본이니 상관없나???)

뭐... 나는 일단 지금당장은 아나콘다 쓸 일이 없어서 설치만 하고 마무리~~~
No module named 이제 안녕...!

 

Post

soup.select: select, select_one 함수.

soup.select('div') #div 태그만 찾는다
soup.select('.item_class') item_class라는 class만 찾는다 
soup.select('#item_list') item_list라는 id만 찾는다

soup:find: find는 계속해서 태그에 태그를 연결시키며 찾아들어가야함. 사용법이 좀 어려움

그래서 select를 쓰기로 결정

그런데 내가 원하는 아이템에 접근해서 정보를 가져오려고 했는데 아래와 같은 에러가 뜬다

 'NavigableString' object has no attribute 'select_one'

이건 그냥 내가 원하는 걸 못찾았다는 소리. 그래서 익숙한 find를 선택...

근데 또 에러 발생ㅠㅠ

 slice indices must be integers or None or have an __index__ method

숫자관련된 문제라는데 난 숫자 관련된게 없는데? for문 결과로 나온 item type확인

print(type(item))

결과는

<class 'bs4.element.NavigableString'>
<class 'bs4.element.Tag'>

이전에 잘만 내가 원하는 정보 가져온 애도 type확인

<class 'bs4.BeautifulSoup'>

애는 BeautifulSoup임... 음...뭔가 다르다....

내가 select_one해서 나온 결과물을 for문을 돌려서 태그로 찾으려는데 왜 찾질 못해 ㅠㅠㅠㅠ

 'NavigableString' object has no attribute 'select_one'

자꼬 이 에러 뜸.....

애초에 select_one으로 나오는 return 타입이 뭘까? NavigbleString?

아 찾았다 애초에 정보가 안들어가 있는 list도 있었음. 나는 리스트만 빼왔으니까 총 3개겠지 했지만 사실 내 눈에 안보이는 리스트까지 8개쯤 됨. 찾는 클래스가 없을 때 예외처리를 해줘야함.

아무튼 예외처리해주니 들여쓰기 잘해주라는 에러도 만나고(잘되어있는데??? 뭔가 이상한 거겠지ㅠㅠ??)

 expected an indented block after 'except' statement on line 29

exception 예외처리에서 print를 주석처리해서 그런거였음!

아무튼 크롤링 성공!

(로그인 안하는 사이트라서 soup로 쉽게 된 듯. 만약 동적 사이트나 로그인 사이트를 크롤링하고 싶다면

Scrapy, Selenium를 찾아봐야할 것 같다)

▲ top