Guidelines

μ‘°μ‚¬ν•œ λ‚΄μš©μ„ CSV ν˜•μ‹μœΌλ‘œ μ €μž₯ν•˜κΈ°

μ›Ή 크둀링으둜 μˆ˜μ§‘ν•œ 자료λ₯Ό CSV 파일둜 μ €μž₯ν•˜λ©΄ μˆ˜μ§‘ν•œ 데이터λ₯Ό μ—‘μ…€ 파일 및 ν…μŠ€νŠΈ μ—λ””ν„°μ—μ„œ μ‰½κ²Œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

이번 μˆ˜μ—…μ—μ„œλŠ” BeautifulSoup으둜 μˆ˜μ§‘ν•œ 자료λ₯Ό CSV 파일둜 μ €μž₯ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.


CSV 파일 μ €μž₯ μ½”λ“œ

μ½”λ“œ μ˜ˆμ‹œ
# StringIO 객체 생성, λ©”λͺ¨λ¦¬μ—μ„œ 파일처럼 μž‘λ™ν•˜λŠ” 객체 (λ¬Έμžμ—΄μ„ μ²˜λ¦¬ν•  수 있음) output = io.StringIO() # CSV νŒŒμΌμ— μ“°λ €λŠ” ν•„λ“œ 이름을 리슀트둜 μ„ μ–Έ fieldnames = ['νšŒμ‚¬λͺ…', 'μ°½μ—…μž', '섀립연도'] # CSV μ“°κΈ° 객체 생성, ν•„λ“œ 이름을 μ§€μ •ν•˜μ—¬ Dictionary ν˜•νƒœλ‘œ 데이터λ₯Ό μž‘μ„±ν•  수 있게 함 writer = csv.DictWriter(output, fieldnames=fieldnames) # CSV 파일의 첫 쀄에 ν•„λ“œ 이름을 μž‘μ„± (헀더 생성) writer.writeheader() # νšŒμ‚¬ 정보가 λ‹΄κΈ΄ μ—¬λŸ¬ ν–‰μ˜ 데이터λ₯Ό CSV ν˜•μ‹μœΌλ‘œ μž‘μ„± (company_infoλŠ” λ”•μ…”λ„ˆλ¦¬λ“€μ˜ 리슀트) writer.writerows(company_info) # CSV ν˜•νƒœμ˜ κ²°κ³Όλ₯Ό 좜λ ₯ print(output.getvalue())

μ½”λ“œ μ„€λͺ…

1. output = io.StringIO()

  • io.StringIO()λŠ” 파이썬의 io λͺ¨λ“ˆμ—μ„œ μ œκ³΅ν•˜λŠ” 클래슀둜, λ©”λͺ¨λ¦¬ λ‚΄μ—μ„œ 파일과 μœ μ‚¬ν•˜κ²Œ λ™μž‘ν•˜λŠ” 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

  • 보톡 CSV νŒŒμΌμ„ 생성할 λ•ŒλŠ” 파일 μ‹œμŠ€ν…œμ— μ €μž₯ν•˜μ§€λ§Œ, μ½”λ“œ μ˜ˆμ‹œλŠ” νŒŒμΌμ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  λ©”λͺ¨λ¦¬ λ‚΄μ—μ„œ λ¬Έμžμ—΄μ„ 닀루기 μœ„ν•΄ StringIO()λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

  • μ—¬κΈ°μ„œ output λ³€μˆ˜λŠ” μΌμ’…μ˜ "λ©”λͺ¨λ¦¬ 버퍼"(λ©”λͺ¨λ¦¬ 곡간)둜, μž‘μ„±ν•  CSV 데이터가 μΌμ‹œμ μœΌλ‘œ μ €μž₯λ˜λŠ” 곡간이 λ©λ‹ˆλ‹€.


2. writer = csv.DictWriter(output, fieldnames=fieldnames)

  • csv.DictWriter()λŠ” 파이썬 csv λͺ¨λ“ˆμ—μ„œ μ œκ³΅ν•˜λŠ” 클래슀둜, λ”•μ…”λ„ˆλ¦¬ ν˜•νƒœμ˜ 데이터λ₯Ό CSV 파일둜 μ“Έ 수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.

  • csv.DictWriter(output, fieldnames=fieldnames)λŠ” outputμ΄λΌλŠ” StringIO 객체λ₯Ό CSV μž‘μ„± 객체둜 λ³€ν™˜ν•©λ‹ˆλ‹€.

  • fieldnamesλŠ” CSV 파일의 첫 쀄에 μ“°μ—¬μ§ˆ ν•„λ“œ 이름을 μ§€μ •ν•˜λŠ” λ¦¬μŠ€νŠΈμž…λ‹ˆλ‹€.


3. writer.writeheader()

  • writer.writeheader()λŠ” CSV 파일의 첫 쀄에 ν•„λ“œ 이름을 μž‘μ„±ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

  • 이 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ fieldnames에 μ§€μ •λœ ν•„λ“œ 이름이 CSV 파일의 첫 μ€„λ‘œ μž‘μ„±λ©λ‹ˆλ‹€.


4. writer.writerows(company_info)

  • writer.writerows()λŠ” μ—¬λŸ¬ ν–‰μ˜ 데이터λ₯Ό CSV 파일둜 μž‘μ„±ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

  • company_infoλŠ” λ”•μ…”λ„ˆλ¦¬λ“€μ˜ 리슀트둜, 각 λ”•μ…”λ„ˆλ¦¬λŠ” CSV 파일의 ν•œ 행을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

  • writer.writerows(company_info)λ₯Ό ν˜ΈμΆœν•˜λ©΄ company_info에 μ €μž₯된 데이터가 CSV 파일둜 μž‘μ„±λ©λ‹ˆλ‹€.


5. print(output.getvalue())

  • output.getvalue()λŠ” StringIO 객체에 μ €μž₯된 데이터λ₯Ό λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

  • print(output.getvalue())λ₯Ό ν˜ΈμΆœν•˜λ©΄ CSV ν˜•νƒœμ˜ κ²°κ³Όλ₯Ό 좜λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


μ§€κΈˆκΉŒμ§€ μ›Ή 크둀링을 톡해 μˆ˜μ§‘ν•œ 데이터λ₯Ό CSV ν˜•μ‹μœΌλ‘œ μ €μž₯ν•˜λŠ” 방법을 μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

μ›Ή 크둀링을 잘 ν™œμš©ν•˜λ©΄ λ³΅μž‘ν•˜κ³  반볡적인 자료 쑰사 μž‘μ—…μ„ 효율적으둜 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ Chapterμ—μ„œλŠ” 이메일 μžλ™ν™”λ₯Ό 싀무에 ν™œμš©ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result