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

michael.shin님의 프로필 이미지
michael.shin

작성한 질문수

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

섹션 5 - 실전 크롤링과 강력한 기술 팁 2

해결된 질문

작성

·

51

0

 강사가 실제 사용하는 자동 프로그램 소개 
 필요한 프로그램 설치 시연 
 데이터를 엑셀 파일로 만들기 
     엑셀 파일 이쁘게! 이쁘게! 
     나대신 주기적으로 파이썬 프로그램 실행하기 
 파이썬으로 슬랙(slack) 메신저에 글쓰기 
 웹사이트 변경사항 주기적으로 체크해서, 메신저로 알람주기 
 네이버 API 사용해서, 블로그에 글쓰기 
 자동으로 쿠팡파트너스 API 로 가져온 상품 정보, 네이버 블로그/트위터에 홍보하기 

위와 같이 크롤링된 결과에 대해서, 4~5행의 앞부분의 공란을 없애주기 위해서 아래와 같이 코딩을 합니다.

 

import requests

from bs4 import BeautifulSoup

res=requests.get("https://davelee-fun.github.io/blog/crawl_test")

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

section=soup.find("ul", id="dev_course_list")

titles=section.find_all("li", class_="course")

for i in titles:

print(i.get_text().split("[")[0].split("-")[1].strip())

 

강의 내용에서 strip(" ")이나 strip(' ')으로 하나, strip()으로 하나, 똑 같은 결과라고 설명하셨는대요

실제로 strip(' ')이나, strip(" ")으로 하면, 4~5행의 앞부분의 공백이 없어지지 않습니다.

이건 왜 그럴까요?

 

 

 

답변 2

1

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

파이썬의 strip() 함수는 문자열에서 양쪽 끝에 있는 공백을 제거하는 함수입니다. 하지만 strip(" ")strip() 사이에 약간의 차이가 있기 때문에 4~5행의 앞부분 공백이 없어지지 않는 이유는 아래와 같습니다.

1. **`strip()`의 동작 원리**:

strip()은 기본적으로 문자열 양 끝의 **모든 공백 문자**(띄어쓰기, 탭, 줄바꿈 등)를 제거합니다. 그래서 이 함수를 사용하면 모든 종류의 공백을 제거할 수 있습니다.

2. **`strip(' ')` 또는 strip(" ")의 동작 원리**:

strip(' ')는 **오로지 띄어쓰기 공백 문자**만을 제거합니다. 즉, 만약 해당 문자열에 탭(`\t`)이나 줄바꿈(`\n`) 등의 다른 공백 문자가 포함되어 있다면, strip(' ')으로는 제거되지 않습니다.

따라서, 4~5행의 앞부분에 탭, 줄바꿈 또는 다른 공백 문자가 있을 경우, strip(" ")으로는 제거되지 않지만, strip()을 사용하면 이 모든 공백 문자를 제거할 수 있습니다.

감사합니다.

잔재미코딩 드림

1

안녕하세요, 인프런 AI 인턴입니다. michael.shin님.

질문해주신 내용에 대한 답변과 비슷한 질문을 찾을 수 있었습니다. 우선 질문의 핵심을 다루기 위해 strip() 함수의 동작 방식에 대해 설명드리겠습니다.

strip() 함수는 문자열의 양쪽 끝에 있는 모든 공백을 제거합니다. 만약 strip(’ ‘)이나 strip(” “)을 사용하면 특정한 공백 문자 ’ ‘만 제거하려는 의도로 해석되지만, 이 함수는 기본적으로 모든 공백 문자를 제거합니다.

아래에서 참고할 수 있는 유사한 질문들이 있습니다:

  1. split 코드 오류
    이 게시물에서는 split 메서드와 관련된 문제를 다루며, 코드에서 발생할 수 있는 오류에 대해 논의합니다.

  2. 직접 작성해보며 익숙해지기: 크롤링 기본 연습문제 풀기 (업데이트) 4/5번 질문입니다
    여기서는 BeautifulSoup을 사용한 크롤링 후 데이터 접근에 대해 다룹니다.

  3. 섹션 4 마지막 강의 9분 30초
    BeautifulSoup을 활용한 다양한 크롤링 방법에 대해 설명합니다.

다시 한 번 핵심을 살펴보면, strip() 함수는 문자열의 양 끝에서 모든 유형의 공백을 제거하므로, 인자로 특정 공백 문자를 넣어 사용할 특별한 필요 없이 단수 strip()으로 충분합니다.

아래 코드를 참고해 주시기 바랍니다.

import requests
from bs4 import BeautifulSoup

res = requests.get("https://davelee-fun.github.io/blog/crawl_test")
soup = BeautifulSoup(res.content, "html.parser")
section = soup.find("ul", id="dev_course_list")
titles = section.find_all("li", class_="course")

for i in titles:
    print(i.get_text().split("[")[0].split("-")[1].strip())

이와 같이 strip() 함수를 기본적으로 사용하면 앞뒤의 모든 공백이 잘 제거될 것입니다. 코드 작성시 이 점 유념해 주시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

michael.shin님의 프로필 이미지
michael.shin

작성한 질문수

질문하기