inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

크롤링을 위한 지식: 크롤링과 프로그래밍 고급 문자열 기술 - 정규표현식1 (업데이트)

질문있습니다.

122

서나 Suna

작성한 질문수 3

0

- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)
- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다
- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다
- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.

from urllib.request import urlopen

from bs4 import BeautifulSoup

import re

res = urlopen('https://davelee-fun.github.io/blog/crawl_test_css.html')

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

data = soup.select('ul#dev_course_list li.course')

for item in data:

print (item.get_text())



여기에서

data = soup.select('ul#dev_course_list li.course')

이부분을

data = soup.select_one('ul#dev_course_list')

data1=soup.select('li.course')

이렇게 나누는 거랑 뭐가 다른가요?

값은 같게 나오길래 궁금해서 여쭤봅니다,

항상 감사합니다!

python 웹-크롤링

답변 1

0

잔재미코딩 DaveLee

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

질문해주신 코드에서 soup.selectsoup.select_one의 차이점 및 data를 분리하는 방법에 대해 설명드리겠습니다.

### 기존 코드:

```python

data = soup.select('ul#dev_course_list li.course')

```

이 코드는 CSS 선택자를 사용하여 ul 태그 중 iddev_course_list인 요소의 자식 요소 중 클래스가 course인 모든 li 태그를 선택합니다. data에는 조건에 맞는 모든 li 태그가 리스트 형태로 저장됩니다.

### 수정된 코드:

```python

data = soup.select_one('ul#dev_course_list')

data1 = soup.select('li.course')

```

이 코드는 두 가지로 나눌 수 있습니다.

1. data = soup.select_one('ul#dev_course_list'):

- 이 부분은 CSS 선택자를 사용하여 ul 태그 중 iddev_course_list인 요소를 선택합니다.

- select_one 메서드는 조건에 맞는 첫 번째 요소를 반환하며, data에는 해당 ul 요소가 저장됩니다.

2. data1 = soup.select('li.course'):

- 이 부분은 CSS 선택자를 사용하여 클래스가 course인 모든 li 태그를 선택합니다.

- select 메서드는 조건에 맞는 모든 요소를 리스트 형태로 반환하며, data1에는 모든 li.course 요소가 저장됩니다.

### 차이점:

1. 선택 요소의 범위:

- soup.select('ul#dev_course_list li.course')는 특정 ul 요소의 자식 li.course 요소들만 선택합니다.

- soup.select('li.course')는 문서 내의 모든 li.course 요소를 선택합니다.

2. 필터링 범위:

- select('ul#dev_course_list li.course')는 부모 요소(`ul#dev_course_list`)와 자식 요소(`li.course`)를 동시에 고려하여 필터링합니다.

- select_one('ul#dev_course_list')select('li.course')는 각각 별도로 필터링하기 때문에, li.course가 다른 ul 요소에도 포함될 수 있습니다.

### 예시로 결과 비교:

문서 구조가 아래와 같을 때,

```html

<ul id="dev_course_list">

<li class="course">Course 1</li>

<li class="course">Course 2</li>

</ul>

<ul id="other_list">

<li class="course">Course 3</li>

</ul>

```

1. soup.select('ul#dev_course_list li.course'):

- 결과: ['Course 1', 'Course 2']

2. soup.select_one('ul#dev_course_list')soup.select('li.course'):

- soup.select_one('ul#dev_course_list'): ul#dev_course_list 요소를 선택

- soup.select('li.course'): 문서 내의 모든 li.course 요소를 선택

- 결과: ['Course 1', 'Course 2', 'Course 3']

따라서, 두 방법은 선택하는 요소의 범위와 필터링 조건이 다릅니다. 주어진 문서 내에서 원하는 요소를 정확히 선택하려면 첫 번째 방법을 사용하는 것이 더 적절할 수 있습니다.

감사합니다.

잔재미코딩 드림

65강 소리

0

24

1

섹션 5 CSS selector사용해서 클로링하기2의 커리큘럼 일정 부재?

0

25

2

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

0

40

1

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

0

47

1

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

0

53

1

크롤링 관련 질문

0

70

1

문제 답이 없는 버전은 없나요?

0

82

1

requests, BeautifulSoup 임포트 부분에 대해 문의드립니다.

0

89

1

업데이트 강의

0

108

2

선생님 강의중에서 sqlite3 강의를 제공한 강의가 있나요?

0

130

2

연습용 예제 파일

0

79

1

lxml 관련 오류

0

112

1

SAVE Request 창 띄우는 법

0

97

1

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

0

85

1

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

0

104

1

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

0

95

1

문제 파일

0

84

1

pdf 파일 내 코드 복붙시 공백

0

300

1

데이터 저장 강좌 문의 건

0

101

1

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

0

248

1

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

0

146

1

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

0

193

1

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

0

147

2

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

0

1566

2