인프런 커뮤니티 질문&답변

해리문님의 프로필 이미지
해리문

작성한 질문수

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

직접 작성해보며 익숙해지기: 크롤링 기본 연습문제 풀기 (업데이트)

연습문제 2번 질문 있습니다!

작성

·

42

0

연습문제 2번에서 아래 코드로 했을 때 안되는데 이유가 뭔지 모르겠습니다! 어차피 1개라서 반복문을 쓰지 않아도 될까 했는데 안되네요..

import requests 
from bs4 import BeautifulSoup 
url = 'https://davelee-fun.github.io/' 
res = requests.get(url) 
soup = BeautifulSoup(res.content, 'html.parser') 
items=soup.select('.sitetitle') 
print(items.get_text())

(+)

print(item.get_text()) 했을때는 잘 추출되는데 item은 선언한적이 없는데 왜 되는걸까요~?

답변 1

0

안녕하세요. 답변 도우미입니다.

두 가지 질문에 대해 각각 답변 드리겠습니다.

### 1. items.get_text()로 실행할 때 에러가 나는 이유

코드에서 items = soup.select('.sitetitle') 부분은 .sitetitle 클래스를 가진 모든 HTML 요소를 선택하여 리스트로 반환합니다. 따라서 items는 리스트 객체이며, 리스트 자체는 get_text() 메서드를 가지고 있지 않기 때문에 에러가 발생합니다.

만약 items 리스트에 들어있는 특정 요소에서 텍스트를 추출하고 싶다면, 예를 들어 첫 번째 요소라면 items[0].get_text()로 접근해야 합니다.

수정된 코드 예시는 다음과 같습니다:

```python

import requests

from bs4 import BeautifulSoup

url = 'https://davelee-fun.github.io/'

res = requests.get(url)

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

items = soup.select('.sitetitle')

# 리스트의 첫 번째 요소의 텍스트 추출

print(items[0].get_text())

```

### 2. print(item.get_text())가 왜 동작하는지

item 변수를 코드에서 선언한 적이 없는데도 동작한다고 말씀하셨는데, 이는 아마도 코드 실행 환경이나 콘솔에서의 이전 실행 상태와 관련이 있을 수 있습니다. 테스트하시다가 item 변수에 뭔가 넣으셔서 그런 것 같습니다. 다시 컴퓨터 껏다 킨 후 테스트해보시면 아마 위 코드에는 item 변수가 선언되어 있지 않아서, 해당 코드는 동작하지 않을 것 같습니다.

 

감사합니다.

잔재미코딩 드림

해리문님의 프로필 이미지
해리문

작성한 질문수

질문하기