연습 4번에서 featured 를 가져오는 방법
188
작성한 질문수 4
영상과 답안지를 보면
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와 같은 구체적인 선택자는 더 취약할 수 있습니다. 페이지의 레이아웃이 변경될 경우, 이 선택자는 더 이상 유효하지 않을 수 있습니다.
- 효율성: 반환된 요소의 수가 많을 경우, 불필요한 처리 시간이 추가될 수 있으며 메모리 사용량도 증가할 수 있습니다.
- 오류 처리: 서버에서 응답이 없거나 페이지 구조가 예상과 다를 경우를 대비한 오류 처리 로직이 충분하지 않을 수 있습니다.
따라서, 웹 스크래핑을 할 때는 가능한 한 목표에 맞게 선택자를 정확히 설정하고, 웹 페이지의 구조 변경에 대응할 수 있도록 코드를 유연하게 작성하는 것이 중요합니다. 또한, 주기적으로 코드가 제대로 작동하는지 확인하고, 필요한 경우 수정하는 것이 좋습니다.
감사합니다.
65강 소리
0
28
1
섹션 5 CSS selector사용해서 클로링하기2의 커리큘럼 일정 부재?
0
29
2
크롤링, 영상을 따라해도 제미나에게 물어봐도 안되요
0
43
1
정규표현식 및 여러 코드 꼭 외워야 하나요?
0
51
1
리스트 함수형도 정수 데이터 받을 수 있나요?
0
55
1
크롤링 관련 질문
0
72
1
문제 답이 없는 버전은 없나요?
0
86
1
requests, BeautifulSoup 임포트 부분에 대해 문의드립니다.
0
93
1
업데이트 강의
0
112
2
선생님 강의중에서 sqlite3 강의를 제공한 강의가 있나요?
0
135
2
연습용 예제 파일
0
82
1
lxml 관련 오류
0
115
1
SAVE Request 창 띄우는 법
0
101
1
포스트맨 사용법이 바뀌어서 강의를 따라가지 못하겠습니다. 2
0
87
1
포스트맨 사용법이 바뀌어서 강의를 따라가지 못하겠습니다.
0
107
1
예제 2, 4, 6에 대한 풀이 방식 질문.
0
97
1
문제 파일
0
89
1
pdf 파일 내 코드 복붙시 공백
0
301
1
데이터 저장 강좌 문의 건
0
104
1
" " 와 ' '의 차이를 알고 싶습니다
0
253
1
Exercise 22. 문자열 다루기 (strip)
0
148
1
list함수로 리스트 선언하면 실패하는데 이유는 무엇입니까?
0
197
1
셀 삽입후 바로 기입이 가능합니까?
0
149
2
주피터 노트북 마우스 스크롤? 오류
0
1568
2





