inflearn logo
강의

Course

Instructor

Big Data Pipeline Master; Tools and Techniques for Success

[Practice] Crawling and Scraping (Urllib, BS4, Selenium)

Beautiful Soup 실습 출력 문의

Resolved

169

jason

74 asked

0

일단 따라 쳐봤는데

아래의 결과 처럼 나오는게 맞을까요?

 

html 변수에 </ul>이 있는데 혹시 앞에 <ul>은 없어도 동작 되나요?

from bs4 import BeautifulSoup

html = """
    <html><body>
    <div id="project">
    <h1 id="title">BIG DATA PROGRAMMING</h1>
    <p id='body'>DATA ANLYSIS AND SCRENCE</p>
    <p>DATA ACQUISTION PART1</p>
    </ul>
    <ul class="items">
    <li>CRAWLING</li>
    <li>SCRAPPING</li>
    <li>HYBRID WAY</li>
</div>
</body></html>
"""

soup = BeautifulSoup(html, 'html.parser')
h1 = soup.html.body.h1
p1 = soup.html.body.p
p2 = p1.next_sibling.next_sibling

print("h1 = " + h1.string)
print("p = " + p1.string)
print("p = " + p2.string)

title = soup.find(id="title")
body = soup.find(id="body")

print("#title=" + title.string)
print("#body=" + body.string)

h1 = soup.select_one("div#project > h1").string
print("h1 =", h1)

li_list = soup.select("div#project > ul.items > li")
for li in li_list:
    print("li =", li.string)

 

결과

python3 2_bs4_temp.py


h1 = BIG DATA PROGRAMMING
p = DATA ANLYSIS AND SCRENCE
p = DATA ACQUISTION PART1
#title=BIG DATA PROGRAMMING
#body=DATA ANLYSIS AND SCRENCE
h1 = BIG DATA PROGRAMMING
li = CRAWLING
li = SCRAPPING
li = HYBRID WAY

 

 

빅데이터 hadoop elasticsearch logstash Kibana apache-spark s3-bucket

Answer 1

1

communityai8509

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

네, 제시해주신 코드로 실행했을 때, 결과는 정상적으로 나온 것이 맞습니다.
Beautiful Soup는 잘못된 HTML 코드를 분석할 때도 상당히 관대합니다. 따라서 <ul> 태그가 누락되어 있음에도 불구하고 파싱은 성공적으로 이루어지고 해당 부분에 대한 결과를 출력할 수 있습니다. 하지만 올바르고 명확한 HTML 문법을 사용하는 것이 좋으므로, 실제 코드를 작성할 때는 태그의 짝이 맞도록 주의해야 합니다.

코드에서 BeautifulSoup 객체를 생성하고 나서 요소를 찾거나 선택하는 메서드들은 HTML 구조에서 지정된 요소를 정확히 찾아 냅니다. soup.html.body.h1, soup.find(id="title"), soup.select_one("div#project > h1"), soup.select("div#project > ul.items > li") 등 모든 메서드는 지정된 요소를 정확히 탐색하여 결과를 출력합니다. 따라서 <ul>이 누락되어 있어도 파싱 과정에서 필요한 요소를 찾는데 문제가 없습니다.

하지만, 좋은 HTML 문서 작성 관행에 따라, 태그의 사용이 적절하게 시작되고 종료되도록 하는 것이 중요합니다. 이는 코드의 가독성과 유지보수성을 개선하는데 도움이 됩니다.

0

jason

<ul> 는 어느 부분에 넣어야 할까요?

강의 pdf는 따로 제공안해주시는 건가요?

0

44

1

practice1 응답값 관련 질문

0

74

2

crontab 결과가 market.log 에 저장이 안돼요ㅠ

0

119

1

코딩 프로그램

0

121

1

색션2 실습 practice 1 질문드립니다.

0

127

1

색션2 실습 Carwling에 practice 1 부분 질문드립니다.

1

115

1

yahoo finacne 데이터 다운로드 안됩니다.

0

373

1

섹션2 가상환경 설치 오류

0

159

1

수강기간연장가능할까요?

0

201

1

수강 기한 연장이 가능할까요?

0

256

1

강의 연장 문의

0

181

1

wb.json , pandas.json 파일을 jupyter notebook 환경에서 read 가 안됩니다..ㅠ

0

531

3

[HDFS] Data integrity; checksum 관련 질문

1

349

2

안녕하세요. 강의 연장 신청 문의드립니다

0

401

2

jar input output_notice 문의

0

348

3

안녕하세요 강의 연장문의

0

326

2

aws ubuntu 22.04 크롬 드라이브 설치 및 경로 확인

0

1193

2

섹션2 실습1 코드 공유 문의..

0

426

3

venv 환경 패키지 설치 방법 문의

0

1391

2

가상머신 설치부터 안됩니다.

0

282

1

Replica Placement 질문입니다.

1

280

2

강의 연장 문의 드립니다.

0

319

2

섹션2 실습 1에서 질문 있습니다.

0

528

2

슬라이드 자료

0

271

1