Gmartket 크롤링 하기 get_text() 에러 질문 드립니다.
# 저는 다음과 같이 구문을 작성했습니다. 상품의 각 그룹이 아니라, 쥐마켓의 베스트 상품 코너를 클릭하면 나오는 첫 페이지(ALL 항목)의 상품들을 크롤링 하려고 했습니다. 해당 페이지의 주소는 'http://corners.gmarket.co.kr/Bestsellers' 였고, 그래서 해당 주소를 입력했습니다. 가격도 받아보고 싶어서 해당 구문을 삽입했고요.
하지만 get_text()에러가 다시 발생했고, 강의 처럼 쥐마켓의 베스트 상품 코너 중 아무 상품 그룹을 클릭해서 크롤링하면 정상적으로 출력이 됨을 확인했습니다. 아래 코드 처럼 작성하면 왜 get_text()에러가 발생하는지(첫 번째 상품은 출력이 되지만 두 번째 상품부터 에러가 발생합니다.), 그리고 어떻게 해결해야 하는지 궁금합니다.
감사합니다!
import requests
from bs4 import BeautifulSoup
res = requests.get('http://corners.gmarket.co.kr/Bestsellers')
soup = BeautifulSoup(res.content, 'html.parser')
titles = soup.select('div.best-list li a.itemname')
for title in titles:
if len(title.get_text()) > 0:
# print(title.get_text(), title['href'])
res_sub = requests.get(title['href'])
soup_sub = BeautifulSoup(res_sub.content, 'html.parser')
price_real = soup_sub.select_one('#itemcase_basic > p > span > strong')
contact_name = soup_sub.select_one('#vip-tab_detail > div.vip-detailarea_productinfo > table:nth-child(3) > tbody > tr:nth-child(4) > td')
contact_num = soup_sub.select_one('#vip-tab_detail > div.vip-detailarea_productinfo > table:nth-child(3) > tbody > tr:nth-child(9) > td')
print(title.get_text(), title['href'], price_real.get_text(), contact_name.get_text(), contact_num.get_text())
답변 2
0
어쩌다보니 제가 비슷한 류의 질문을 두개나 올렸네요. 그래도 친절한 답변/이유 감사합니다. 크롤링이 쉬우면서도 사소한 것 하나라도 어긋나면 에러가 발생하는것 같아요. 감사합니다!
0
안녕하세요. 우선 정말 잘하고 계시다는 이야기드리고 싶어요. 이렇게 여러가지 크롤링을 조금씩 변경해가면서 자기만의 코드를 작성해보는 것은 너무 좋은 일 같아요. 제가 각자 작성하신 각자의 코드를 봐드리려면, 각자가 원하는 크롤링 프로그램을 만들어야 하는 상황이 오기때문에, 시간적으로도, 현실적으로도 조금 무리가 있긴 한데요.
gmarket에서 css selector로 각 상품의 타이틀과 가격을 크롤링할 수 있는 코드를 작성하는 것이 쉽지가 않긴 합니다.
마침 제가 여러 에러끝에 정상적으로 동작하는 코드를 작성했어요. 그래서 다음 코드를 한번 분석하셔서, 어떤 부분이 애매한 부분이었는지, 한번 확인해보시면 좋을 것 같아요.
베스트 사이트를 크롤링한 후, 다음과 같이 크롤링을 하였습니다.
best_item = html.select('div.best-list')
for index, item in enumerate(best_item[1].select('li')):
title = item.select_one('a.itemname').get_text()
ori_price = item.select_one('div.o-price').get_text()
dis_price = item.select_one('div.s-price strong span').get_text()
discount_percent = item.select_one('div.s-price em')
감사합니다.
크롤링, 영상을 따라해도 제미나에게 물어봐도 안되요
0
28
1
정규표현식 및 여러 코드 꼭 외워야 하나요?
0
36
1
리스트 함수형도 정수 데이터 받을 수 있나요?
0
45
1
크롤링 관련 질문
0
62
1
문제 답이 없는 버전은 없나요?
0
74
1
requests, BeautifulSoup 임포트 부분에 대해 문의드립니다.
0
83
1
업데이트 강의
0
97
2
선생님 강의중에서 sqlite3 강의를 제공한 강의가 있나요?
0
123
2
연습용 예제 파일
0
76
1
lxml 관련 오류
0
106
1
SAVE Request 창 띄우는 법
0
90
1
포스트맨 사용법이 바뀌어서 강의를 따라가지 못하겠습니다. 2
0
72
1
포스트맨 사용법이 바뀌어서 강의를 따라가지 못하겠습니다.
0
93
1
예제 2, 4, 6에 대한 풀이 방식 질문.
0
89
1
문제 파일
0
78
1
pdf 파일 내 코드 복붙시 공백
0
291
1
데이터 저장 강좌 문의 건
0
95
1
" " 와 ' '의 차이를 알고 싶습니다
0
241
1
Exercise 22. 문자열 다루기 (strip)
0
131
1
list함수로 리스트 선언하면 실패하는데 이유는 무엇입니까?
0
187
1
셀 삽입후 바로 기입이 가능합니까?
0
139
2
주피터 노트북 마우스 스크롤? 오류
0
1544
2
등호 2개('==')의 의미가 뭐죠?
0
458
2
페이지가 넘어갈 때 url 변하지 않는 경우
0
262
1





