inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

직접 작성해보며 익숙해지기: 크롤링과 전처리 이해하기 (업데이트)

find와 select 호환 사용에 대하여.

1597

jungaapark

작성한 질문수 1

0

안녕하세요^^ 먼저 좋은 강의 해주셔서 큰 도움 받고 있는 수강생입니다. 쉽게 설명해주셔서 순식간에 강의를 들으며 여기까지 왔습니다. 

강의 내용을 따라해보던 중, 아래와 같은 코드로 설명해주신 부분을 따라하고 있었는데요. 

import requests

from bs4 import BeautifulSoup

res=requests.get('https://finance.naver.com/sise/')

soup=BeautifulSoup(res.content, 'html.parser')

data=soup.select('div.rgt > ul.lst_major > li')

for item in data:

    print(item.find('a').get_text(),item.find('span').get_text(),item.find('em').get_text())

맨 아랫줄에서 find 대신 select도 되는지 넣어보았는데, find를 모두 select로 바꿔 넣으면 아래와 같은 에러가 뜹니다. 

AttributeError: ResultSet object has no attribute 'get_text'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?

그래서 select를 사용하면 get_text()를 사용할 수 없다는 의미 같아서요. 아래와 같이 다시 작성해보았는데요. 

import requests from bs4 import BeautifulSoup res=requests.get('https://finance.naver.com/sise/') soup=BeautifulSoup(res.content, 'html.parser') data=soup.select('div.rgt > ul.lst_major > li') for item in data: data1=item.select('a') print(data1.get_text())


이렇게 해도 같은 에러메세지가 떠서요. 혹시 select 하에 select를 또 사용하는게 잘못된건가요? 또는 제가 select를 잘못 활용하고 있는것인가요? 해당 부분을 강의 다시 들었는데도 잘 모르겠어서 질문 드립니다. 

따라하며 배우니 재미있게 잘 왔지만, 응용하려면 아무래도 더 많은 시간 고민하고 공부해야겠다는 생각이 드네요. ^^; 

웹-크롤링 python

답변 3

1

jinnylucky

for item in data:
    data1=item.select('a')
    print(data1.get_text())

제가 알기로는 select - select 사용 가능합니다. 다만, jungaapark님께서 작성하신 코드를 보면,
data1=item.select('a') 부분에서 select를 사용하셨는데, 이 경우에는 data1이 리스트가 됩니다.
그리고, 리스트가 된 경우에는 get_text()를 사용할 수 없어요.
data1을 for문으로 푸는 코드를 작성하거나 (리스트 전체 출력), select_one을 사용해서 첫번째 값을 뽑는 두가지 방법이 있을 것 같네요.

값 하나 : select_one = find
리스트 : select = find_all
리스트일 때는 for문으로 풀기, 값이 하나만 들어있을 때는 그냥 print로 출력 가능.
이렇게 생각하시면 좋을 것 같습니다.

0

jungaapark

select 후에 바로 select는 사용할 수 없나보네요.. 말씀하신대로 select_one으로 설정하니 실행이 됩니다!

빠른 답변 정말 정말 감사드립니다! 

0

ses123you

안녕하세요~,

선택자 사용을 잘못하신거 같아요.

select 가 아니라 select_one 으로 바꿔주셔요.

첫번째 -----------------

import requests

from bs4 import BeautifulSoup

res=requests.get('https://finance.naver.com/sise/')

soup=BeautifulSoup(res.content, 'html.parser')

data=soup.select('div.rgt > ul.lst_major > li')

for item in data:

    print(item.select_one('a').get_text(),item.select_one('span').get_text(),item.select_one('em').get_text())

두번째 ------------------

import requests

from bs4 import BeautifulSoup

res=requests.get('https://finance.naver.com/sise/')

soup=BeautifulSoup(res.content, 'html.parser')

data=soup.select('div.rgt > ul.lst_major > li')

for item in data:

    data1=item.select_one('a')

    print(data1.get_text())

크롤링, 영상을 따라해도 제미나에게 물어봐도 안되요

0

32

1

정규표현식 및 여러 코드 꼭 외워야 하나요?

0

39

1

리스트 함수형도 정수 데이터 받을 수 있나요?

0

45

1

크롤링 관련 질문

0

63

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

92

1

포스트맨 사용법이 바뀌어서 강의를 따라가지 못하겠습니다. 2

0

74

1

포스트맨 사용법이 바뀌어서 강의를 따라가지 못하겠습니다.

0

94

1

예제 2, 4, 6에 대한 풀이 방식 질문.

0

89

1

문제 파일

0

78

1

pdf 파일 내 코드 복붙시 공백

0

291

1

데이터 저장 강좌 문의 건

0

95

1

" " 와 ' '의 차이를 알고 싶습니다

0

242

1

Exercise 22. 문자열 다루기 (strip)

0

131

1

list함수로 리스트 선언하면 실패하는데 이유는 무엇입니까?

0

187

1

셀 삽입후 바로 기입이 가능합니까?

0

139

2

주피터 노트북 마우스 스크롤? 오류

0

1546

2

등호 2개('==')의 의미가 뭐죠?

0

459

2

페이지가 넘어갈 때 url 변하지 않는 경우

0

266

1