에러설명
- 파이썬으로 크롤링을 하는 와중에 추출한 text를 합쳐서 출력하려는데 자꾸 해당 에러가 발생함. 분명 모두 str일텐데 왜 'Tag'가 있지..?라는 생각으로 일단 type확인부터 하기로함.
에러해결
과정
1. 에러 확인을 위해 type을 확인 해보기!
...
for product_name in product_name_list:
category = ""
url = "https://search.shopping.naver.com/search/all?where=all&frm=NVSCTAB&query=" + \
quote(product_name)
print(product_name)
if check_response(url):
html = urlopen(url)
soup = bs(html, "html.parser")
category_data = soup.find(
"div", attrs={"class": "basicList_depth__2QIie"})
if not category_data:
print("category_data가 없습니다.")
else:
category_list = category_data.find_all('span')
for category in category_list:
category_text = category.text
category_text_str = str(category.text)
print(f"type(category_text) : {type(category_text)}")
print(f"type(category_text) : {type(category_text)}")
print(category)
print("-----------------------------")
# category[product_name] = category
Semi Boots Cut Denim (Light Blue, Middle Blue)
type(category_text) : <class 'str'>
type(category_text) : <class 'str'>
type(category_text) : <class 'str'>
type(category_text) : <class 'str'>
type(category_text) : <class 'str'>
type(category_text) : <class 'str'>
<span class="basicList_category__wVevj basicList_nohover__1rebX">청바지</span>
-----------------------------
Slim Fit Square Neck T (White, Mustard, Black)
category_data가 없습니다.
-----------------------------
- 모두 str이 나오길래 왜 에러가 났을까 생각하던 도중 마지막 줄에 tag가 출력된 것을 확인
- 코드를 자세히 보니 for문의 변수가 category인 것을 발견함.
- 해당 부분이 오류인 것 같아 for문의 변수를 바꿔보기로함.
2. for문의 변수 바꾸기
...
for product_name in product_name_list:
category = ""
url = "https://search.shopping.naver.com/search/all?where=all&frm=NVSCTAB&query=" + \
quote(product_name)
print(product_name)
if check_response(url):
html = urlopen(url)
soup = bs(html, "html.parser")
category_data = soup.find(
"div", attrs={"class": "basicList_depth__2QIie"})
if not category_data:
print("category_data가 없습니다.")
else:
category_tag_list = category_data.find_all('span')
for category_tag in category_tag_list:
category_text = category_tag.text
category_text_str = str(category_tag.text)
print(f"type(category_text) : {type(category_text)}")
print(f"type(category_text_str) : {type(category_text_str)}")
print(category)
print("-----------------------------")
Semi Boots Cut Denim (Light Blue, Middle Blue)
type(category_text) : <class 'str'>
type(category_text_str) : <class 'str'>
type(category_text) : <class 'str'>
type(category_text_str) : <class 'str'>
type(category_text) : <class 'str'>
type(category_text_str) : <class 'str'>
-----------------------------
Slim Fit Square Neck T (White, Mustard, Black)
category_data가 없습니다.
-----------------------------
느낀점
- for문 변수 사용시에 다른 변수와 겹치지 않은지 확인을 잘 해봐야되겠다!