Guidelines

Selenium μΆ”μΆœν•œ 데이터λ₯Ό CSV 파일둜 μ €μž₯ν•˜κΈ°

μ§€λ‚œ 두 μˆ˜μ—…μ—μ„œλŠ” Selenium을 ν™œμš©ν•΄ Yahoo Finance μ›Ή νŽ˜μ΄μ§€μ— μ ‘μ†ν•˜κ³ , μ‹œμž₯ 데이터와 주식 정보λ₯Ό μΆ”μΆœν•˜λŠ” 방법을 λ°°μ› μŠ΅λ‹ˆλ‹€.

이번 μˆ˜μ—…μ—μ„œλŠ” μΆ”μΆœν•œ 데이터λ₯Ό CSV 파일둜 좜λ ₯ν•˜κ³  μ €μž₯ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.


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

μ•„λž˜μ˜ μ½”λ“œλŠ” μ»΄ν“¨ν„°μ˜ 파일 μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  λ©”λͺ¨λ¦¬μ—μ„œ CSV 데이터λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ io.StringIO와 csv λͺ¨λ“ˆμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

μ½”λ“œ μ˜ˆμ‹œ
# CSV 데이터λ₯Ό 생성할 λ©”λͺ¨λ¦¬ 버퍼 생성 output = io.StringIO() # csv.writer 객체 생성 (기본적으둜 μ‰Όν‘œλ‘œ ꡬ뢄) csv_writer = csv.writer(output) # μ„Έλ‘œλ‘œ 배치된 CSV 데이터 μž‘μ„± csv_writer.writerow(["Metric", "Value"]) csv_writer.writerow(["Current Price", current_price]) csv_writer.writerow(["Previous Close", previous_close]) csv_writer.writerow(["Volume", volume]) # CSV 데이터λ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜ csv_data = output.getvalue() # λ©”λͺ¨λ¦¬ 버퍼 λ‹«κΈ° output.close()

각 쀄을 λ‹¨κ³„λ³„λ‘œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

1. output = io.StringIO()

  • io.StringIO()λŠ” 파이썬의 io λͺ¨λ“ˆμ—μ„œ μ œκ³΅ν•˜λŠ” ν΄λž˜μŠ€μž…λ‹ˆλ‹€.

  • 이 ν΄λž˜μŠ€λŠ” λ©”λͺ¨λ¦¬ λ‚΄μ—μ„œ 파일과 μœ μ‚¬ν•˜κ²Œ λ™μž‘ν•˜λŠ” 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

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

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


2. csv_writer = csv.writer(output)

  • csv.writer()λŠ” 파이썬 csv λͺ¨λ“ˆμ—μ„œ μ œκ³΅ν•˜λŠ” ν΄λž˜μŠ€μž…λ‹ˆλ‹€.

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

  • 이 csv_writer κ°μ²΄λŠ” CSV 데이터λ₯Ό μž‘μ„±ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 기본적으둜 μ‰Όν‘œ(,)λ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό κ΅¬λΆ„ν•©λ‹ˆλ‹€.

  • 이제 csv_writerλŠ” 데이터λ₯Ό CSV ν˜•μ‹μœΌλ‘œ 기둝할 수 있게 λ©λ‹ˆλ‹€.


3. csv_writer.writerow(["Metric", "Value"])

  • csv_writer.writerow()λŠ” CSV의 ν•œ 행을 μž‘μ„±ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

  • 이 μ€„μ—μ„œλŠ” 첫 번째 행을 μž‘μ„±ν•˜λŠ”λ°, "Metric"κ³Ό "Value"λΌλŠ” 두 개의 ν•­λͺ©μ„ μž‘μ„±ν•©λ‹ˆλ‹€.

  • ["Metric", "Value"]: 이 λ¦¬μŠ€νŠΈλŠ” 각각의 μ—΄(column) 이름을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

    • "Metric": 데이터 ν•­λͺ©μ˜ 이름 (예: Current Price, Previous Close, Volume)
    • "Value": ν•΄λ‹Ή ν•­λͺ©μ˜ κ°’ (예: 5619.58, 5626.02, 895731735)
  • 이 행은 CSV 파일의 첫 번째 쀄, 즉 헀더 행이 λ©λ‹ˆλ‹€.


4. csv_writer.writerow(["Current Price", current_price])

  • csv_writer.writerow()λ₯Ό λ‹€μ‹œ ν˜ΈμΆœν•˜μ—¬ 두 번째 행을 μž‘μ„±ν•©λ‹ˆλ‹€.

  • 이 μ€„μ—μ„œλŠ” "Current Price"λΌλŠ” ν•­λͺ©μ˜ κ°’μœΌλ‘œ current_price λ³€μˆ˜λ₯Ό κΈ°λ‘ν•©λ‹ˆλ‹€.

  • ["Current Price", current_price]: 리슀트의 첫 번째 ν•­λͺ©μ€ "Current Price"λΌλŠ” μ—΄ 이름, 두 번째 ν•­λͺ©μ€ current_price에 μ €μž₯된 μ‹€μ œ κ°’μž…λ‹ˆλ‹€.

  • 이 행은 ν˜„μž¬ μ£Όκ°€ 데이터λ₯Ό ν¬ν•¨ν•˜λŠ” CSV의 두 번째 쀄이 λ©λ‹ˆλ‹€.


5. csv_writer.writerow(["Previous Close", previous_close])

  • μ„Έ 번째 ν–‰μœΌλ‘œ, "Previous Close" ν•­λͺ©κ³Ό κ·Έ 값인 previous_close 데이터λ₯Ό CSV에 μž‘μ„±ν•©λ‹ˆλ‹€.

  • ["Previous Close", previous_close]: "Previous Close"λŠ” ν•­λͺ© 이름, previous_closeλŠ” κ·Έ κ°’μž…λ‹ˆλ‹€.


6. csv_writer.writerow(["Volume", volume])

  • λ„€ 번째 ν–‰μœΌλ‘œ, "Volume" ν•­λͺ©κ³Ό κ·Έ 값인 volume 데이터λ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.

  • ["Volume", volume]: "Volume"은 ν•­λͺ© 이름, volume은 κ·Έ κ°’μž…λ‹ˆλ‹€.


7. csv_data = output.getvalue()

  • output.getvalue(): λ©”λͺ¨λ¦¬ 버퍼에 μ €μž₯된 λͺ¨λ“  데이터λ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€.

  • StringIO 객체인 output에 μž‘μ„±λœ CSV 데이터λ₯Ό λ©”λͺ¨λ¦¬μ—μ„œ λ¬Έμžμ—΄λ‘œ κ°€μ Έμ˜΅λ‹ˆλ‹€.

  • μ΄λ•Œ csv_dataλŠ” λ¬Έμžμ—΄ ν˜•μ‹μ˜ CSV 데이터가 μ €μž₯된 λ³€μˆ˜κ°€ λ©λ‹ˆλ‹€.


8. output.close()

  • output.close(): 더 이상 λ©”λͺ¨λ¦¬ 버퍼λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— StringIO 객체λ₯Ό λ‹«μŠ΅λ‹ˆλ‹€.

  • λ©”λͺ¨λ¦¬ μžμ›μ„ ν•΄μ œν•˜λŠ” 과정이며, output κ°μ²΄λŠ” 더 이상 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.


μ§€κΈˆκΉŒμ§€ μˆ˜μ—…μ—μ„œλŠ” Selenium으둜 주식 데이터 κ°€κ³΅ν•˜κ³ , CSV 파일둜 μ €μž₯ν•˜λŠ” 방법을 λ°°μ› μŠ΅λ‹ˆλ‹€.

λ‹€μŒ μˆ˜μ—…μ—μ„œλŠ” 고객별 월별 맀좜 데이터λ₯Ό 파이썬으둜 λΆ„μ„ν•˜κ³ , λ§žμΆ€ν˜• λ³΄κ³ μ„œλ₯Ό μ΄λ©”μΌλ‘œ μžλ™ λ°œμ†‘ν•˜λŠ” 방법을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result