인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

joeykim9010님의 프로필 이미지
joeykim9010

작성한 질문수

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

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

연습 4번에서 featured 를 가져오는 방법

작성

·

120

0

영상과 답안지를 보면

featured 를 가져오기 위해서

featured = soup.select_one('section.featured-post') 를 추가하는 작업이 있는데요...

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('section.featured-posts h4.card-text')

for item in items:

print (item.get_text().strip())

이렇게 하는 방법으로도 동일한 결과값이 나오긴 하는 데

이렇게 하는 방법에 추후 문제나 단점이 있을까요??

답변 1

0

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

우선 둘 중의 원하시는 바를 쓰셔도 둘 다 괜찮습니다. 다만, 보다 구체적인 답변이 필요하시다면, 다음 내용을 참고해보시면 좋을 것 같습니다.

설명해주신 코드는 웹 페이지에서 특정 데이터를 스크래핑하는 과정을 보여주고 있습니다. soup.select_one('section.featured-post')soup.select('section.featured-posts h4.card-text')를 사용하여 정보를 추출하는 방식이 다르긴 하지만, 두 방식 모두 유효하며 상황에 따라 선택할 수 있습니다. 각 방법의 차이와 잠재적인 문제점에 대해 살펴보겠습니다.

### 1. soup.select_one('section.featured-post') 사용

- 장점: select_one 메소드는 CSS 선택자에 해당하는 첫 번째 요소만을 반환합니다. 따라서 특정 섹션의 정보를 정확히 타깃팅하여 추출할 때 유용합니다.

- 단점: 만약 여러 개의 요소가 필요하거나 동적으로 변하는 내용이라면, 이 메소드만으로는 충분한 정보를 수집하기 어려울 수 있습니다.

### 2. soup.select('section.featured-posts h4.card-text') 사용

- 장점: select 메소드는 지정한 CSS 선택자에 매칭되는 모든 요소를 리스트 형태로 반환합니다. 따라서 여러 데이터를 한 번에 수집할 때 효과적입니다.

- 단점: 반환된 리스트를 추가적으로 처리해야 할 필요가 있으며, 원하지 않는 데이터도 포함될 수 있습니다. 또한, CSS 선택자가 더 구체적이기 때문에 페이지 구조에 따라서는 미세 조정이 필요할 수 있습니다.

### 잠재적 문제나 단점

- 유지보수성: 웹 페이지의 구조가 변경되면 CSS 선택자도 그에 맞게 수정해야 합니다. 특히, soup.select에서 사용한 section.featured-posts h4.card-text와 같은 구체적인 선택자는 더 취약할 수 있습니다. 페이지의 레이아웃이 변경될 경우, 이 선택자는 더 이상 유효하지 않을 수 있습니다.

- 효율성: 반환된 요소의 수가 많을 경우, 불필요한 처리 시간이 추가될 수 있으며 메모리 사용량도 증가할 수 있습니다.

- 오류 처리: 서버에서 응답이 없거나 페이지 구조가 예상과 다를 경우를 대비한 오류 처리 로직이 충분하지 않을 수 있습니다.

따라서, 웹 스크래핑을 할 때는 가능한 한 목표에 맞게 선택자를 정확히 설정하고, 웹 페이지의 구조 변경에 대응할 수 있도록 코드를 유연하게 작성하는 것이 중요합니다. 또한, 주기적으로 코드가 제대로 작동하는지 확인하고, 필요한 경우 수정하는 것이 좋습니다.

 

감사합니다.

joeykim9010님의 프로필 이미지
joeykim9010

작성한 질문수

질문하기