【Python】 Beautiful Soup을 사용하여 로컬 HTML 파일을 스크래핑하여 CSV 출력하는 방법

소개



로컬 html 파일에서 텍스트 데이터를 스크래핑하고 싶고 여러가지 시도했지만 파이썬 라이브러리의 Beautiful Soup이 매우 편리했기 때문에 사용법과 CSV 파일로의 출력 방법을 공유합니다.

개발 환경



pyenv: 1.2.15
파이썬: 3.6.5
Beautiful Soup: 4.4.0
VSCode: 1.41.1

파이썬 환경 구축



환경 구축은 Progate의 하기 레슨을 참고로 했습니다.
파이썬 개발 환경을 준비합시다! (Mac)

Beautiful Soup이란?



파이썬 라이브러리의 일종으로 HTML 데이터에서 HTML 태그와 CSS 선택기를 기준으로
스크래핑을 수행할 수 있습니다.
공식 참조 : htps //w w. c 루 my. 코 m / 그 f와 ぁ레 / 베아 치후 l 그래 p / bs4 / 두 c /
참조 일본어 번역 (ver 3.0) : htps // t c.んふぉ/베아우치후 l소 p/

Beautiful Soup 소개



pip 을 사용하여 설치합니다.
아래의 기사를 참고로 했습니다.

【Python 입문】 pip란? 사용법을 알기 쉽게 해설!
파이썬의 beautifulsoup으로 스크래핑을 해보자.

다음 명령으로 설치할 수 있습니다.
pip install beautifulsoup4

html 파일 준비



스크래핑할 html 파일을 로컬로 준비합니다.
다음은 샘플 파일입니다.

/sample_file/sample.html
<!-- 〜省略〜 -->
<div>
  <ul lass="sample">
    <li class="sample">
      <a href="aaa">aaaaaa</a>
    </li>
    <li class="sample">
      <a href="bbb">bbbbb</a>
    </li>
  </ul>
  <div class="sample">
    <a href="ccc">ccc</a>
  </div>
  <div class="sample">
    <div class="sample">
        <a href="ddd">ddddd</a>
    </div>
  </div>
</div>
<!-- 〜省略〜 -->

스크래핑 작업



파이썬 파일 만들기



그런 다음 파이썬 프로그램을 만듭니다. html 파일과 같은 디렉토리에 만드십시오.

/sample_file/script.py
import bs4
import csv # モジュール"CSV"の呼び出し

# スクレイピング対象のhtmlファイルからsoupを作成
soup = bs4.BeautifulSoup(open('sample.html'), 'html.parser')

links = soup.find_all('a') # 全てのaタグ要素を取得

csvlist = [] # 配列を作成

for link in links: # aタグのテキストデータを配列に格納
    sample_txt = link.text
    csvlist.append(sample_txt)

# CSVファイルを開く。ファイルがない場合は新規作成
f = open("output_sample.csv", "w")
writecsv = csv.writer(f, lineterminator='\n')

writecsv.writerow(csvlist) # 出力

f.close() # CSVファイルを閉じる

아래의 기사를 참고로 했습니다.

Python으로 HTML 구문 분석 (Beautiful Soup)
BeautifulSoup으로 스크래핑한 HTML을 CSV로 출력

파이썬 파일 실행


$ cd sample_file
$ python script.py

출력 결과



같은 디렉토리에 다음과 같이 CSV 파일이 출력됩니다.

output_sample.csv
aaaaaa,bbbbb,ccc,ddddd

CSV 처리



1. CSV 파일의 가독성 향상



VSCode를 사용하는 경우 Rainbow CSV라는 확장 기능을 도입하면 CSV를 매우 쉽게 볼 수 있습니다.

before



after


Rainbow CSV의 도입은 하기 기사를 참고로 했습니다.
VSCode로 CSV를 멋지게 보이게 하는 「Rainbow CSV」를 소개하겠습니다

2. seed 데이터용으로 처리



위의 방법으로 스크래핑하면 많은 줄 바꿈이 들어갈 수 있습니다.
CSV 파일을 seed 데이터 등으로 배열의 내용으로 사용하고 싶은 경우
개행을 지우고 한 줄로 하고 싶은 경우가 있습니다.
그러한 때는 VSCode의 치환 기능으로 개행을 일괄 삭제하는 방법을 추천합니다.

이 방법이 아래의 기사를 참고로 했습니다.
【VisualStudioCode】 개행 코드를 치환해 1행으로 하는 방법

요약



Beautiful Soup에서 스크래핑을 수행할 수 있습니다.
모듈 "CSV"를 사용하면 CSV 파일을 출력 할 수 있습니다.
html 파일의 구성에 의해 CSV 파일에 많은 개행이 들어 버리는 경우,
VSCode의 대체 기능이 편리합니다.

참고 URL



htps: //p 여과-8. 코 m / cs / py 텐 엔 v
htps //w w. c 루 my. 코 m / 그 f와 ぁ레 / 베아 치후 l 그래 p / bs4 / 두 c /
htps //w w. 세주쿠. 네 t/bぉg/50417
htps //w w. 세주쿠. 네 t/bぉg/75137
htps : // 잘 77. 기주 b. 이오/py 텐/파 r세-HTML-by-베아우후후-그래서 p. HTML
htps // 5㎉g. 는 bぉ. jp/엔트리/2019/01/03/075552
htps : // m / 0w0 / ms / 07 a 481921 a 2 a c09 a 049f
htps : // 쿵카. 메 / vsc - w / /

좋은 웹페이지 즐겨찾기