일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬3
- pyqt5
- pandas
- Outlook
- 깃
- python3
- 비주얼베이직
- 엑셀
- git
- 문자열
- windows
- Windows10
- Excel
- win32com
- 윈도우10
- html
- 안드로이드
- 파이썬GUI
- VBA
- Android
- python
- 윈도우11
- 아웃룩
- office
- pythongui
- 파워포인트
- matlab
- Windows11
- 오피스
- 파이썬
Appia의 IT세상
Python[파이썬 웹크롤러] 05-WebCrawler beautifulsoup4(뷰티풀 수프) 웹페이지(HTML)를 파싱하기(Parsing) 본문
Python[파이썬 웹크롤러] 05-WebCrawler beautifulsoup4(뷰티풀 수프) 웹페이지(HTML)를 파싱하기(Parsing)
Appia 2020. 10. 24. 07:09Python[파이썬 웹크롤러] 05-WebCrawler beautifulsoup4(뷰티풀 수프)
웹페이지를 파싱하기(Parsing)
앞서 포스팅에서는 beautifulsoup4(뷰티풀 수프)를 설치하는 방법과 왜 beautifulsoup4(뷰티풀 수프)를사용하는지에 대해서 간단히 이야기 해봤습니다. 이번 포스팅에서는 beautifulsoup4(뷰티풀 수프)를 통해서 간단히 웹페이지를 파싱하는 방법에 대해서 이야기를 해볼까 합니다.
먼저 흔히들 beautifulsoup4(뷰티풀 수프)을 통해서 웹페이지 또는 Html 등의 파일을 Parsing 한다고 하면 수프를 만든다고 이야기를 합니다. 수프를 만드기 위해서는 관련해서 파서등을 사용해야 합니다. 관련해서는 다음과 같은 파서등을 지원하고 있습니다.
물론, 다들 장단점이 다르지만, 저의 경우 주로, html.parser을 사용합니다. 그럼 간단히 한번 살펴보겠습니다. 물론 경우에 따라서, xml을 사용할 경우 lxml을 사용한느 경우도 있지만 크롤러의 경우에는 Html.parser로 충분합니다.
그럼 이제는 총 2가지로 소스를 바탕으로 수프를 만들어보겠습니다.
1. HTML파일을 파싱하기
2. 웹페이지(WebPage)를 파싱하기
그럼 각각에 대해서 살펴보도록 하겠습니다.
1. HTML 파일을 파싱하기
HTML파일을 읽어오기 위해서는 파일 입출력을 함께 사용하셔야 합니다.
위의 부분을 활용하여 다음과 같은 코드를 작성해보겠습니다.
1 2 3 4 5 6 | from bs4 import BeautifulSoup with open("happy.html") as fs: soup = BeautifulSoup(fs, 'html.parser') print(soup) | cs |
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
1 2 3 4 5 6 7 8 9 10 11 | .... </head> <body lang="KO" style="tab-interval:40.0pt;word-wrap:break-word"> <div class="WordSection1"> <p class="MsoNormal">안녕하세요 </p> <p class="MsoNormal">시작입니다<span lang="EN-US">. </span></p> <p class="MsoNormal"><span lang="EN-US">Appia</span>입니다<span lang="EN-US">. </span></p> <p class="MsoNormal">침착하세요<span lang="EN-US">.</span></p> </div> </body> </html> | cs |
2. 웹페이지(WebPage)를 파싱하기
먼저 웹페이지(WebPage)를 파싱하기 위해서는 먼저 Reuqest 모듈을 사용하셔야 합니다. Request 모듈에 대해서는 다음 포스팅을 참조 하시길 바랍니다.
Python[파이썬 웹크롤러] 03-WebCrawler 사이트의 내용(Html) 읽어오기(requests)
위의 링크의 있는 부분을 활용하여 다음과 같은 코드를 작성해봤습니다.
1 2 3 4 5 6 7 | import requests from bs4 import BeautifulSoup page = requests.get("https://appia.tistory.com") soup = BeautifulSoup(page.content,'html.parser') print(soup) | cs |
위의 코드의 결과로 다음과 같은 결과가 나타납니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <!DOCTYPE html> <html lang="ko"> <head> <link href="https://t1.daumcdn.net/tistory_admin/lib/lightbox/css/lightbox.min.css" rel="stylesheet" type="text/css"/><link href="https://t1.daumcdn.net/tistory_admin/assets/blog/tistory-d3000a74025b1649b2518a0efdb24746e237dd2c/blogs/style/content/font.css?_version_=tistory-d3000a74025b1649b2518a0efdb24746e237dd2c" rel="stylesheet" type="text/css"/><link href="https://t1.daumcdn.net/tistory_admin/assets/blog/tistory-d3000a74025b1649b2518a0efdb24746e237dd2c/blogs/style/content/content.css?_version_=tistory-d3000a74025b1649b2518a0efdb24746e237dd2c" rel="stylesheet" type="text/css"/><!--[if lt IE 9]><script src="https://t1.daumcdn.net/tistory_admin/lib/jquery/jquery-1.12.4.min.js"></script><![endif]--><!--[if gte IE 9]> <!--><script src="https://t1.daumcdn.net/tistory_admin/lib/jquery/jquery-3.2.1.min.js"></script><!--<![endif]--> <script src="https://t1.daumcdn.net/tistory_admin/lib/lightbox/js/lightbox-plus-jquery.min.js"></script> <script> lightbox.options.fadeDuration = 200; lightbox.options.resizeDuration = 200; lightbox.options.wrapAround = false; lightbox.options.albumLabel = "%1 / %2"; </script> <script>var tjQuery = jQuery.noConflict(true);</script><style type="text/css">.tt_article_useless_p_margin p {padding-top:0 !important;padding-bottom:0 !important;margin-top:0 !important;margin-bottom:0 !important;}</style><meta content="always" name="referrer"/><link href="//t1.daumcdn.net/tistory_admin/static/top/favicon_0630.ico" rel="icon"/><link href="//img1.daumcdn.net/thumb/C180x180/?fname=https%3A%2F%2Ftistory3.daumcdn.net%2Ftistory%2F2919201%2Fattach%2Fe226702a7ac94e989c9e4fd132b6536a" rel="apple-touch-icon"/> <link href="//img1.daumcdn.net/thumb/C76x76/?fname=https%3A%2F%2Ftistory3.daumcdn.net%2Ftistory%2F2919201%2Fattach%2Fe226702a7ac94e989c9e4fd132b6536a" rel="apple-touch-icon" sizes="76x76"/> ..... <div class="inner_layer_tooltip"> <p class="desc_g"></p> </div> </div> <div class="layer_post" id="tistoryEtcLayer"></div><div class="layer_post" id="tistorySnsLayer"></div></body> </html> | cs |
실제 웹페이지의 내용에 대해서 모두 읽어왔습니다. 이 부분을 토대로, 본격적으로 원하는 데이터를 정리할 수 있습니다.
이와 같이 2가지 형태로 데이터를 파싱하는 것에 대해서 살펴봤습니다. 이제 다음 포스팅에서는 본격적으로 데이터를 찾아가는 방법에 대해서 포스팅을 해보도록 하겠습니다. 이번 포스팅에서는 Python[파이썬 웹크롤러] 05-WebCrawler beautifulsoup4(뷰티풀 수프) 웹페이지(HTML)를 파싱하기(Parsing)라는 간단히 다루어 봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.
'Python > Python Crawler[크롤러]' 카테고리의 다른 글
[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목과 링크주소출력하기 (bs4, requests) (0) | 2021.08.19 |
---|---|
[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목 출력하기 (bs4, requests) (0) | 2021.08.18 |
Python[파이썬 웹크롤러] 04-WebCrawler beautifulsoup4(뷰티풀 수프)설치하기 (0) | 2020.10.22 |
Python[파이썬 웹크롤러] 03-WebCrawler 사이트의 내용(Html) 읽어오기(requests) (0) | 2020.07.24 |
Python[파이썬 웹크롤러] 02-WebCrawler 사이트의 헤더 읽어오기(requests) (0) | 2020.07.22 |