Top 32 파이썬 웹 크롤링 예제 295 Most Correct Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 파이썬 웹 크롤링 예제 on Google, you do not find the information you need! Here are the best content compiled and compiled by the toplist.Experience-Porthcawl.com team, along with other related topics such as: 파이썬 웹 크롤링 예제 파이썬 웹크롤링 오픈소스, 파이썬 웹 크롤링 selenium, 파이썬 웹 크롤링 패키지, 웹크롤링 활용 사례, 파이썬 네이버 크롤링, 파이썬 크롤링 코드, 파이썬 BeautifulSoup, 파이썬 크롤링 하는 법


파이썬 크롤링 기초 강좌 – 예제 1. 네이버 헤드라인 뉴스를 크롤링 해보자
파이썬 크롤링 기초 강좌 – 예제 1. 네이버 헤드라인 뉴스를 크롤링 해보자


파이썬 웹 크롤링? 웹 스크래핑 개념과 실습 예제 – Snug Archive

  • Article author: snugarchive.com
  • Reviews from users: 35376 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 파이썬 웹 크롤링? 웹 스크래핑 개념과 실습 예제 – Snug Archive 파이썬 웹 크롤링? 웹 스크래핑 개념과 실습 예제. Python 웹 스크래핑 코드로 실습하기. Published 2022 … …
  • Most searched keywords: Whether you are looking for 파이썬 웹 크롤링? 웹 스크래핑 개념과 실습 예제 – Snug Archive 파이썬 웹 크롤링? 웹 스크래핑 개념과 실습 예제. Python 웹 스크래핑 코드로 실습하기. Published 2022 … 업무를 하시다가 우리가 원하는 정보를 깔끔하게 정리해서 결과만 가져오는 도구가 있으면 좋겠다는 생각 해보신 적 있으신가요? 한동안 유행했…
  • Table of Contents:

Python 웹 스크래핑 코드로 실습하기

용어

환경 설정

Robotstxt와 사용자 에이전트(user agent)

기본 코드 프레임

기초 예제

참고 문헌

파이썬 웹 크롤링? 웹 스크래핑 개념과 실습 예제 - Snug Archive
파이썬 웹 크롤링? 웹 스크래핑 개념과 실습 예제 – Snug Archive

Read More

Python) 파이썬 BeautifulSoup4를 이용해 웹 크롤링 예제 만들어 보기

  • Article author: h-glacier.tistory.com
  • Reviews from users: 9600 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Python) 파이썬 BeautifulSoup4를 이용해 웹 크롤링 예제 만들어 보기 이와 같이, 파이썬을 이용해 웹사이트의 정보를 크롤링 해오려면. Beautiful Soup 4 라는 라이브러리를 사용해야 한다. …
  • Most searched keywords: Whether you are looking for Python) 파이썬 BeautifulSoup4를 이용해 웹 크롤링 예제 만들어 보기 이와 같이, 파이썬을 이용해 웹사이트의 정보를 크롤링 해오려면. Beautiful Soup 4 라는 라이브러리를 사용해야 한다. 저번 포스팅에서는 이미지 크롤링 프로그램을 만들어 보았다. Python) 파이썬을 이용한 이미지 크롤링 프로그램 만들기 어쩌다보니 티스토리 블로그를 이용한 첫 번째 포스팅이 파이썬 코딩 관련 글이다. 티스토..
  • Table of Contents:

Glacier’s Daily Log

Python) 파이썬 BeautifulSoup4를 이용해 웹 크롤링 예제 만들어 보기 본문

티스토리툴바

Python) 파이썬 BeautifulSoup4를 이용해 웹 크롤링 예제 만들어 보기
Python) 파이썬 BeautifulSoup4를 이용해 웹 크롤링 예제 만들어 보기

Read More

2.6 사이트 정보 추출하기 – beautifulsoup 사용법 (1) – 비전공자를 위한 파이썬 자동화 완벽 가이드

  • Article author: wikidocs.net
  • Reviews from users: 22000 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 2.6 사이트 정보 추출하기 – beautifulsoup 사용법 (1) – 비전공자를 위한 파이썬 자동화 완벽 가이드 응답 코드가 200 일때, html 을 받아와 soup 객체로 변환 합니다. 네이버 지식인 크롤링 예제. 네이버 지식인에 “파이썬”을 검색하면 첫 번째로 나오는 제목을 가져오려면 … …
  • Most searched keywords: Whether you are looking for 2.6 사이트 정보 추출하기 – beautifulsoup 사용법 (1) – 비전공자를 위한 파이썬 자동화 완벽 가이드 응답 코드가 200 일때, html 을 받아와 soup 객체로 변환 합니다. 네이버 지식인 크롤링 예제. 네이버 지식인에 “파이썬”을 검색하면 첫 번째로 나오는 제목을 가져오려면 … 온라인 책을 제작 공유하는 플랫폼 서비스
  • Table of Contents:
2.6 사이트 정보 추출하기 - beautifulsoup 사용법 (1) - 비전공자를 위한 파이썬 자동화 완벽 가이드
2.6 사이트 정보 추출하기 – beautifulsoup 사용법 (1) – 비전공자를 위한 파이썬 자동화 완벽 가이드

Read More

python – 웹 크롤링 예제 ( Requests & BeautifulSoup )

  • Article author: youngwonhan-family.tistory.com
  • Reviews from users: 9643 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about python – 웹 크롤링 예제 ( Requests & BeautifulSoup ) python – 웹 크롤링 예제 ( Requests & BeautifulSoup ) … 비정형 데이터인 웹페이지 데이터를 수집하기 위해 Python진영에는 BeautifulSoup이라는 … …
  • Most searched keywords: Whether you are looking for python – 웹 크롤링 예제 ( Requests & BeautifulSoup ) python – 웹 크롤링 예제 ( Requests & BeautifulSoup ) … 비정형 데이터인 웹페이지 데이터를 수집하기 위해 Python진영에는 BeautifulSoup이라는 … 들어가며.. 비정형 데이터인 웹페이지 데이터를 수집하기 위해 Python진영에는 BeautifulSoup이라는 강력한 라이브러리가 존재한다. 이를 사용하여 어떻게 웹 스크래핑을 하는지 간단히 살펴보도록 한다. 목적 데..프로그래밍도 사람의 언어와 같습니다. 본질을 이해하고 익숙해지기 위해서 블로그를 운영합니다.
    빅데이터, 머신러닝에 관심이 많습니다.
  • Table of Contents:
python - 웹 크롤링 예제 ( Requests & BeautifulSoup )
python – 웹 크롤링 예제 ( Requests & BeautifulSoup )

Read More

웹크롤링 기본: 연습문제와 흥미로운 예제 – 잔재미코딩

  • Article author: www.fun-coding.org
  • Reviews from users: 30089 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 웹크롤링 기본: 연습문제와 흥미로운 예제 – 잔재미코딩 연습문제와 흥미로운 예제 연습문제 1. … 추출하기 http://media.daum.net/economic/ 로 크롤링된 데이터 중 http:// 로 시작 … 파이썬입문과 크롤링기초 부트캠프. …
  • Most searched keywords: Whether you are looking for 웹크롤링 기본: 연습문제와 흥미로운 예제 – 잔재미코딩 연습문제와 흥미로운 예제 연습문제 1. … 추출하기 http://media.daum.net/economic/ 로 크롤링된 데이터 중 http:// 로 시작 … 파이썬입문과 크롤링기초 부트캠프. 5. 연습문제와 흥미로운 예제 연습문제 1. 다음 뉴스 경제란 뉴스 타이틀 추출하기 http://media.daum.net/economic/ 로 크롤링된 데이터 중 http:// 로 시작하는 링크를 다시 들어가서, title 태그 정보만 출력해보기 5. 연습문제와 흥미로운 예제 연습문제 1. 다음 뉴스 경제란 뉴스 타이틀 추출하기 http://media.daum.net/economic/ 로 크롤링된 데이터 중 http:// 로 시작하는 링크를 다시 들어가서, title 태그 정보만 출력해보기
  • Table of Contents:

5 연습문제와 흥미로운 예제¶

CSS Selector를 사용한 크롤링

쿠키(Cookie)와 세션(Session)

웹크롤링 기본:  연습문제와 흥미로운 예제 - 잔재미코딩
웹크롤링 기본: 연습문제와 흥미로운 예제 – 잔재미코딩

Read More

[Python] beautifulsoup를 사용한 웹 크롤링 예제 – 노래 가사 가져오기

  • Article author: developer-next-to-you.tistory.com
  • Reviews from users: 21832 ⭐ Ratings
  • Top rated: 4.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Python] beautifulsoup를 사용한 웹 크롤링 예제 – 노래 가사 가져오기 [Python] beautifulsoup를 사용한 웹 크롤링 예제 – 노래 가사 가져오기 … Beautiful Soup is a Python library for pulling data out of HTML and … …
  • Most searched keywords: Whether you are looking for [Python] beautifulsoup를 사용한 웹 크롤링 예제 – 노래 가사 가져오기 [Python] beautifulsoup를 사용한 웹 크롤링 예제 – 노래 가사 가져오기 … Beautiful Soup is a Python library for pulling data out of HTML and …  Python에는 여러가지 모듈이 있습니다. 진짜 많은 모듈들. 그 중 오늘은 beutifulsoup라고, 웹 크롤링을 하는 모듈을 써보려 합니다. Beautiful Soup is a Python library for pulling data out of HTML and XML..
  • Table of Contents:

지나가던 개발자

[Python] beautifulsoup를 사용한 웹 크롤링 예제 – 노래 가사 가져오기 본문

티스토리툴바

[Python] beautifulsoup를 사용한 웹 크롤링 예제 - 노래 가사 가져오기
[Python] beautifulsoup를 사용한 웹 크롤링 예제 – 노래 가사 가져오기

Read More

파이썬을 이용한 웹스크레이핑(웹크롤링) 예제/requests와 beautifulsoup로 웹페이지 정보 추출하기

  • Article author: codealone.tistory.com
  • Reviews from users: 39959 ⭐ Ratings
  • Top rated: 5.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 파이썬을 이용한 웹스크레이핑(웹크롤링) 예제/requests와 beautifulsoup로 웹페이지 정보 추출하기 파이썬을 이용한 웹스크레이핑(웹크롤링) 예제/requests와 beautifulsoup로 웹페이지 정보 추출하기. by 나홀로코더 2021. 11. 30. …
  • Most searched keywords: Whether you are looking for 파이썬을 이용한 웹스크레이핑(웹크롤링) 예제/requests와 beautifulsoup로 웹페이지 정보 추출하기 파이썬을 이용한 웹스크레이핑(웹크롤링) 예제/requests와 beautifulsoup로 웹페이지 정보 추출하기. by 나홀로코더 2021. 11. 30. 1. 시작하기 전에 앞서 requests와 beautifulsoup의 기본적인 사용법을 소개했다. 여기에서는 이를 활용한 실제 웹스크레이핑 예제를 다룬다. 참고로 앞선 글과 여기에서 소개하는 방법은 URL 주소를 통해 내가 원..
  • Table of Contents:

1 시작하기 전에

2 웹스크레이핑 예제(단일 페이지)

3 웹스크레이핑 예제(여러 페이지)

태그

관련글

댓글0

파이썬을 이용한 웹스크레이핑(웹크롤링) 예제/requests와 beautifulsoup로 웹페이지 정보 추출하기
파이썬을 이용한 웹스크레이핑(웹크롤링) 예제/requests와 beautifulsoup로 웹페이지 정보 추출하기

Read More

파이썬 웹 크롤링 예제

  • Article author: balmostory.tistory.com
  • Reviews from users: 26632 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 파이썬 웹 크롤링 예제 파이썬 웹 크롤링 예제. 발모스토리 2020. 11. 27. 00:00. BeautifulSoup은 HTML, XML 문서를 파싱 하기 위한 패키지로 크롤링을 도와줍니다. …
  • Most searched keywords: Whether you are looking for 파이썬 웹 크롤링 예제 파이썬 웹 크롤링 예제. 발모스토리 2020. 11. 27. 00:00. BeautifulSoup은 HTML, XML 문서를 파싱 하기 위한 패키지로 크롤링을 도와줍니다. BeautifulSoup은 HTML, XML 문서를 파싱 하기 위한 패키지로 크롤링을 도와줍니다. 파싱이란 문자열을 의미 있는 토큰으로 분해하고 파스 트리를 만드는 것입니다. HTML, XML 문서를 쉽게 분석할 수 있도록 도와준..
  • Table of Contents:

BeautifulSoup은 HTML XML 문서를 파싱 하기 위한 패키지로 크롤링을 도와줍니다

태그

‘기타python’ Related Articles

파이썬 웹 크롤링 예제
파이썬 웹 크롤링 예제

Read More

파이썬 웹 크롤링 예제를 통해 쉽게 배우기 (web crawling with python)

  • Article author: kitle.xyz
  • Reviews from users: 45778 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 파이썬 웹 크롤링 예제를 통해 쉽게 배우기 (web crawling with python) 파이썬 웹 크롤링 예제를 통해 쉽게 배우기 (web crawling with python). by Kitle · 2017. 06. 08. 파이썬을 통해 아주 쉽고 간단하게 웹의 정보를 가져올 수 있는 … …
  • Most searched keywords: Whether you are looking for 파이썬 웹 크롤링 예제를 통해 쉽게 배우기 (web crawling with python) 파이썬 웹 크롤링 예제를 통해 쉽게 배우기 (web crawling with python). by Kitle · 2017. 06. 08. 파이썬을 통해 아주 쉽고 간단하게 웹의 정보를 가져올 수 있는 … 파이썬을 통해 아주 쉽고 간단하게 웹의 정보를 가져올 수 있는 방법을 …
  • Table of Contents:

준비하기

알고리즘 구성하기

구현하기

파이썬 웹 크롤링 예제를 통해 쉽게 배우기 (web crawling with python)
파이썬 웹 크롤링 예제를 통해 쉽게 배우기 (web crawling with python)

Read More

웹 크롤링 간단예제 | Beautiful Soup 사용법

  • Article author: jee-young.tistory.com
  • Reviews from users: 7795 ⭐ Ratings
  • Top rated: 5.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 웹 크롤링 간단예제 | Beautiful Soup 사용법 웹에서 데이터를 크롤링할때, Python 라이브러리인 Beautiful Soup을 통해 원하는 데이터를 가져올 수 있다. 1. 설치환경 Python 3.6 2. …
  • Most searched keywords: Whether you are looking for 웹 크롤링 간단예제 | Beautiful Soup 사용법 웹에서 데이터를 크롤링할때, Python 라이브러리인 Beautiful Soup을 통해 원하는 데이터를 가져올 수 있다. 1. 설치환경 Python 3.6 2. 웹에서 데이터를 크롤링할때, Python 라이브러리인 Beautiful Soup을 통해 원하는 데이터를 가져올 수 있다. 1. 설치환경 Python 3.6 2. BeautifulSoup 라이브러리 설치 pip install beautifulsoup4 3. 뉴스기사..
  • Table of Contents:

웹 크롤링 간단예제 Beautiful Soup 사용법

티스토리툴바

웹 크롤링 간단예제 | Beautiful Soup 사용법
웹 크롤링 간단예제 | Beautiful Soup 사용법

Read More


See more articles in the same category here: toplist.Experience-Porthcawl.com/blog.

파이썬 웹 크롤링? 웹 스크래핑 개념과 실습 예제

업무를 하시다가 우리가 원하는 정보를 깔끔하게 정리해서 결과만 가져오는 도구가 있으면 좋겠다는 생각 해보신 적 있으신가요? 한동안 유행했던 ‘알아서 잘 딱 깔끔하게 센스있게’ 라는 말처럼, 단순하고 반복되는 작업을 프로그램이 대신 처리해주면 얼마나 효율적일까요? 우리는 프로그램의 도움을 받아 더 본질적이고 중요한 일에 우리의 소중한 시간을 쓸 수 있을 것입니다.

생산성 Kris | Unsplash

이를 가능하게 해주는 도구가 있습니다. 바로 우리가 배울 파이썬입니다. 우리는 파이썬을 통해 원하는 정보만을 우리가 원하는 방식대로 가공해서 가져올 수 있습니다. 이를 웹 스크래핑(web scraping)이라고 합니다.

웹 스크래핑? 웹 크롤링(web crawling) 아닌가요? 두 단어는 웹에서 정보를 가져오는 일을 할 때 자주 혼용되어 쓰입니다. 하지만 두 단어는 다릅니다. 웹 크롤링과 웹 스크래핑은 무엇이며 둘은 어떤 차이점이 있을까요?

이번 시간에는 웹 스크래핑과 웹 크롤링의 차이는 무엇인지 그리고 웹 스크래핑 실습을 위해 필요한 환경 설정과 준비 도구를 살펴보겠습니다. 웹 스크래핑을 위한 준비를 마치면 실제 예제 코드를 통해 우리가 웹에서 가져온 정보를 엑셀로 저장해보겠습니다. 그럼 시작해볼까요?

용어

웹 크롤링과 웹 스크래핑은 어떤 차이가 있을까요? 먼저 웹 크롤링을 살펴보겠습니다.

웹 크롤링

웹 크롤링은 ‘URL을 탐색해 반복적으로 링크를 찾고 가져오는 과정’입니다. ‘기어 다니다’ 라는 뜻의 영어 단어 크롤링(crawling)을 사용한 것에서 알 수 있듯이, 웹 크롤링은 웹 페이지를 찾아다니며 정보를 수집합니다.

대표적인 웹 크롤링으로는 검색엔진의 웹 크롤러(web crawler)가 하는 일을 예로 들 수 있습니다. 웹 크롤러는 URL을 수집하고 웹 페이지를 복사하여, 수집한 웹 페이지에 색인(index)을 부여합니다. 사용자에게 더 신속하게 정보를 제공하기 위해서죠. 분류가 잘 되어있으면 그만큼 검색 속도가 올라갈 테니까요. 그럼 웹 스크래핑은 무엇일까요?

웹 스크래핑

웹 스크래핑은 ‘우리가 정한 특정 웹 페이지에서 데이터를 추출하는 것’입니다. 우리가 특정 주제의 뉴스만을 가져오거나, 인기 검색어 정보를 가져오는 것, 어떤 상품의 가격을 모니터링하는 것 모두 웹 스크래핑입니다. 우리가 원하는 특정 웹 사이트가 있고 그곳에서 우리가 필요한 정보만을 가져오는 것이니까요. 그래서 웹 스크래핑을 웹 데이터 추출(web data extraction), 웹 하베스팅(web harvesting)이라고도 부릅니다.

웹 크롤링과 웹 스크래핑 차이

웹 크롤링과 웹 스크래핑은 모두 정보를 추출해온다는 데서는 공통점을 지닙니다. 하지만 ‘타켓 웹 페이지의 유무’와 ‘중복 제거(deduplication)의 실행 여부’에서 차이가 납니다.

웹 크롤링은 특정 웹 페이지를 목표로 하지 않습니다. 일단 탐색부터 하고, 정보를 가져오죠. ‘선탐색 후추출’입니다. 반면 웹 스크래핑을 할 때는 목표로 하는 특정 웹페이지가 있습니다. 우리가 원하는 정보를 어디서 가져올지 타겟이 분명하고, 그 타겟에서 정보를 가져오죠. 그래서 ‘선결정 후추출’입니다.

또, 웹 크롤링에서는 중복 제거가 필수적입니다. 중복되거나 불필요한 정보를 가져와서 분류를 더 어렵게 할 필요는 없으니까요. 도서관의 책이 개별적으로 구분되는 색인이 있는 것처럼 웹 크롤링도 수집한 웹 페이지가 중복되지 않도록 서로 다른 색인을 남깁니다. 그래서 웹 크롤링을 웹 인덱싱(web indexing)이라고도 부릅니다.

반면 웹 스크래핑에서는 중복 제거가 필수는 아닙니다. 중복된 정보를 가지고 있을 필요는 없지만, 그렇다고 꼭 필수적으로 하는 일도 아니죠.

이번 글에서 우리가 다룰 주제는 웹 스크래핑입니다. 웹 스크래핑을 하기 위해서는 몇 가지 환경 설정을 해야 합니다.

환경 설정

파이썬으로 웹 스크랩핑을 하기 위해서는 기본적으로 텍스트 에디터, 브라우저, 개발자 도구가 필요합니다. 이 도구들이 준비되면 파이썬 패키지 매니저인 pip 으로 웹 스크래핑 라이브러리를 설치하면 됩니다.

텍스트 에디터

저는 VS Code를 사용했습니다. 텍스트 에디터를 선택하는 것이 고민되신다면 통합 개발 환경(IDE), 텍스트 에디터 인기 순위 (2022년)에서 전 세계 개발자들이 사용하는 툴을 살펴보시고 개발 환경을 설정하셔도 됩니다.

브라우저

여기서는 구글 크롬을 사용했습니다.

개발자 도구

구글 크롬을 기준으로 개발자 도구를 여는 방법에는 크게 3가지가 있습니다.

직접 열기

오른쪽 상단 모서리에 . 이 수직 방향으로 3개 찍힌 부분을 클릭하시고 도구 더보기 를 누른 다음 개발자 도구에 들어가시면 됩니다.

네이버 웹툰에서 우리가 가져오고 싶은 부분 | Snug Archive

마우스 오른쪽 클릭 > 검사

마우스 오른쪽 버튼을 클릭한 뒤 목록의 맨 하단에 나타난 검사 를 누르면 개발자 도구를 열 수 있습니다.

네이버 웹툰에서 우리가 가져오고 싶은 부분 | Snug Archive

단축키

저는 단축키를 사용합니다. 개발자 도구 단축키는 다음과 같습니다.

윈도우: Ctrl + Shift + I

맥: Alt(Option) + Command + I

다음은 패키지 설치입니다.

패키지 설치

웹 스크래핑을 하기 위해서는 requests, beautifulsoup4, lxml 패키지가 필요합니다. requests 라이브러리는 HTTP 프로토콜을 통해 웹 서버에 요청하고 응답 받는 과정을 처리하는 라이브러리고, beautifulsoup4는 웹 페이지에서 데이터를 추출해오는 라이브러리, 그리고 lxml은 가져온 html 문서를 파싱하는 라이브러리입니다.

참고로 파서로는 내장(built-in) html.parser 를 사용할 수도 있습니다. 여기서는 html.parser 보다 속도가 빠른 lxml 을 사용했습니다. 파서에 대해 더 자세히 알고 싶은 분들은 공식 홈페이지의 BeautifulSoup 파서 차이를 참조하시면 됩니다.

라이브러리를 설치하지 않고 라이브러리를 import 하면 오류가 발생할 것입니다. 아래는 requests 모듈이 설치되어 있지 않다( No module named ‘requests’ )는 트레이스백(traceback)입니다. 트레이스백은 인터프리터가 코드를 실행하려다 문제가 생겼을 때 보여주는 기록입니다.

bash Traceback ( most recent call last ) : File “d:\Python\practice.py” , line 2 , in < module > import requests ModuleNotFoundError: No module named ‘requests’

패키지를 설치하려면 파워셸(PowerShell)이나 윈도우의 셸인 cmd에 다음과 같이 입력하시면 됩니다.

bash pip install beautifulsoup4 lxml requests

위 코드는 세 라이브러리를 한 번에 설치하는 방식입니다. pip install 을 세 번 사용해서 라이브러리를 하나씩 설치하셔도 됩니다.

텍스트 에디터, 브라우저, 개발자 도구, 그리고 패키지 설치가 모두 완료되셨으면 웹 스크래핑을 진행할 준비가 되신 겁니다. 마지막으로 웹 스크래핑을 하기 전에 한 가지 염두에 두셔야 할 점이 있습니다. 바로 Robots.txt와 사용자 에이전트(user agent)입니다.

Robots.txt와 사용자 에이전트(user agent)

Robots.txt는 웹 사이트 및 웹 페이지를 수집하는 로봇들의 무단 접근을 방지하기 위해 만들어진 로봇 배제 표준(robots exclusion standard)이자 국제 권고안입니다. 일부 스팸 봇이나 악성 목적을 지닌 가짜 클라이언트 로봇은 웹 사이트에 진짜 클라이언트처럼 접근합니다. 그리고 무단으로 웹 사이트 정보를 긁어가거나, 웹 서버에 부하를 줍니다. 이런 로봇들의 무분별한 접근을 통제하기 위해 마련된 것이 Robots.txt입니다.

그래서 가끔 웹 서버에 요청을 보내도 요청을 거부 당하는 일이 있습니다. 우리를 무단 봇으로 짐작하고 웹 서버에서 접근을 막는 것이죠. 그럼 우리는 브라우저에게 스팸 봇이 아니라 사람이라는 것을 알려주면 되겠죠? 이때 브라우저에게 전달하는 것이 사용자 에이전트(user agent) 정보입니다.

사용자 에이전트는 사용자를 대표하는 컴퓨터 프로그램입니다. 웹 맥락에서는 브라우저, 웹 페이지를 수집하는 봇, 다운로드 관리자, 웹에 접근하는 다른 앱 모두 사용자 에이전트지요. 웹 서버에 요청할 때 사용자 에이전트 HTTP 헤더(user agent HTTP header)에 나의 브라우저 정보를 전달하면 웹 서버가 나를 진짜 사용자로 인식할 수 있게 됩니다. 사용자 에이전트 헤더를 설정하는 방법은 아래 기본 코드 프레임에서 살펴보겠습니다.

요약하자면 웹 스크래핑을 할 때 원칙은 다음과 같습니다.

서버에 과도한 부하를 주지 않는다.

가져온 정보를 사용할 때(특히 상업적으로) 저작권과 데이터베이스권에 위배되지 않는지 주의한다.

이 원칙들을 잘 지킨다면 분별있는 사용자 에이전트가 될 수 있을 것입니다. 그럼 지금부터는 웹 스크래핑을 본격적으로 해보겠습니다. 기본 코드 프레임은 아래와 같습니다.

Robots.txt는 웹 페이지의 메인 주소에 ‘/robots.txt’를 입력하면 확인 할 수 있습니다. 예를 들어 naver의 경우에는 ‘www.naver.com/robots.txt’를 입력하면 됩니다. 여기서 ‘User-agent’는 규칙이 적용되는 대상 사용자 에이전트가 누구인지를 말합니다. ‘Disallow’와 ‘Allow’는 각각 크롤링을 금지할 웹 페이지와 허용할 웹 페이지를 뜻합니다. 자세한 규약은 robots.txt 공식 홈페이지(www.robotstxt.org)를 참조해주세요.

기본 코드 프레임

기본 코드 프레임에는 크게 두 가지가 있습니다. 하나는 데이터를 추출하는 코드고 다른 하나는 데이터를 엑셀에 저장하는 코드입니다.

먼저 데이터를 추출하는 코드를 살펴보겠습니다. 아래 코드는 ‘requests’와 ‘bs4’ 라이브러리 모듈을 사용해 html 문서를 가져온 뒤 이를 lxml로 파싱하여 soup 객체로 만드는 과정을 나타낸 코드입니다.

python 1 import requests 2 from bs4 import BeautifulSoup 3 4 url = “www.snugarchive.com” 5 res = requests . get ( url ) 6 res . raise_for_status ( ) 7 soup = BeautifulSoup ( res . text , “lxml” )

각 줄에서 진행하는 작업은 다음과 같습니다.

파이썬 표준 라이브러리인 requests 모듈을 임포트(import)한다 표준 라이브러리 bs4 모듈에서 BeautifulSoup 클래스만 임포트한다. import 문과의 구분을 위한 빈 줄 실제 타겟 URL을 문자열 객체로 만들어 변수 url에 할당한다. 웹 서버에 GET 요청을 보내고 웹 서버가 응답한 내용을 변수 res에 할당한다(requests 모듈의 get() 함수에 url 인자를 넣고 그 결괏값을 res에 할당한다) 에러가 발생하면 에러를 반환한다. 웹 서버로부터 응답 받은 객체 중에서 text 속성(HTML 소스 코드)을 선택하고, 우리가 받은 HTML 소스 코드를 lxml 파서를 통해 BeautifulSoup 객체로 만든다(응답받은 데이터를 soup 변수에 할당한다)

6번에서 만약 403 에러가 뜬다면 앞서 말씀드린 것처럼 웹 서버측에서 우리의 접근을 거부한 것입니다. user agent 헤더를 설정하려면 다음과 같은 방법을 따르면 됩니다.

WhatIsMyBrowser에 들어가서 나의 사용자 에이전트 정보를 확인합니다. 웹 스크래핑 시 headers 정보를 딕셔너리 형태로 만들어 변수에 할당합니다. 웹 서버에 요청시 이 header 정보를 함께 보냅니다.

코드로는 아래와 같습니다.

python headers = { “User-Agent” : “[WhatIsMyBrowser에 나타난 나의 유저 정보]” } res = requests . get ( url , headers = headers )

참고로 soup 객체가 전체적으로 어떻게 생겼는지 파악하고 싶다면 다음 코드를 사용할 수 있습니다.

python print ( type ( soup ) ) print ( soup . head ) print ( soup . body ) print ( soup . title ) print ( soup . title . name ) print ( soup . title . string )

다음은 데이터를 엑셀로 저장하는 기본 코드를 알아보겠습니다.

python 1 import csv 2 3 filename = “고냥이 장난감.csv” 4 f = open ( filename , “w” , encoding = “utf-8-sig” , newline = “” ) 5 writer = csv . writer ( f ) 6 7 columns_title = [ “컬럼명1” , “컬럼명2” ] 8 writer . writerow ( columns_title ) 9 10 data = [ “결과1” , “결과2” ] 11 writer . writerow ( data )

위 코드를 한 줄씩 해석해보면 다음과 같습니다.

파이썬 표준 라이브러리 csv 모듈을 임포트한다 윗 줄과 코드를 분리하기 위한 빈 줄 파일명이 “고냥이 장난감”이고 파일 확장자가 “csv”인 문자열 객체를 만들어 filename 이라는 변수에 할당한다. 파일을 여는 open 함수에 첫 번째 인자로 filename을, 두 번째 인자로 쓰기 모드인 “w”를, 세 번째 인자에 encoding은 “utf-8-sig” 방식으로, 마지막 인자에 csv에서 한 칸 띄어쓰기 옵션인 newline에 띄어쓰기 없음(enter 없음)을 뜻하는 “” 인자를 넣어 그 결괏값을 f에 할당한다. 파일을 쓴다(csv 모듈에서 writer 함수에 우리가 연 파일의 정보가 담긴 f 변수를 인자로 주고 그 결괏값을 writer에 할당한다). 윗 줄과 코드를 분리하기 위한 빈 줄 열의 이름을 리스트 형식으로 만들어 columns_title 변수에 할당한다. csv 파일에서 사용할 컬럼명으로 columns_title을 쓴다. 윗 줄과 코드를 분리하기 위한 빈 줄 우리가 csv 파일에 쓰고 싶은 데이터인 [“결과1”, “결과2”] 를 data 변수에 할당한다. 우리의 데이터를 csv 파일에 쓴다.

위 코드에서는 data를 한 줄만 csv 파일에 사용했는데 보통 반복문 형식을 만들어 row 형식으로 만든 데이터를 차례로 기록합니다. 실제 사용 예제는 아래 실습 코드를 참조하시면 됩니다.

표준 라이브러리(standard library) 파이썬을 설치할 때 포함된 프로그램 임포트(import) 프로그램에서 사용할 수 있도록 설정한다는 의미 utf-8-sig 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나인 UTF-8에 signature가 붙어서 문자열을 Byte Order Mark(BOM)으로 처리하는 인코딩 방식. utf-8-sig를 사용하면 한글이 깨지는 현상을 방지할 수 있음

지금까지 우리는 웹 스크래핑을 위한 기본 코드 프레임을 알아보았습니다. 그럼 지금부터는 본격적으로 웹 스크래핑을 실습해보겠습니다.

기초 예제

첫 번째 주제는 네이버 웹툰에서 실시간 인기 웹툰 순위를 가져오는 것입니다.

네이버 실시간 인기 웹툰 1위부터 10위까지 가져오기

네이버 웹툰에서 현 시각 가장 인기 있는 웹툰의 순위를 1위부터 10위까지 추출해보겠습니다. 우리가 가져오고 싶은 부분은 아래 ‘인기 급상승 웹툰’의 ‘제목’ 텍스트입니다.

네이버 웹툰에서 우리가 가져오고 싶은 부분 | Snug Archive

그리고 우리가 원하는 결과는 다음과 같습니다.

네이버 웹툰에서 가져온 데이터 결괏값 | Snug Archive

그럼 먼저 개발자 도구를 열어 해당 영역의 소스코드를 살펴보겠습니다. 아래 사진에서 빨간색 선으로 영역이 구분되어 있습니다. 오른쪽 영역을 보시면 개발자 도구가 열려있죠. 1번 영역은 우리가 가져오고 싶은 타겟 대상이고 2번 영역은 개발자 도구에 나타난 1번 영역의 소스 코드입니다.

문서와 데이터를 구조화하는 마크업 언어 | Snug Archive

개발자 도구에 있는 소스 코드에서 인기 급상승 웹툰은 ‘ol’ 요소 중에서 class 명이 ‘assideBoxRank’인 부분에 담긴 것을 확인할 수 있습니다. 그중에서도 우리가 원하는 것은 웹툰의 제목입니다. 웹툰의 제목은 ‘ol’ 영역 안의 ‘a’요소에서 속성이 ‘title’인 부분에 담겨있습니다.

문서와 데이터를 구조화하는 마크업 언어 | Snug Archive

우리는 이 ‘a’요소 10개를 가져와 반복문으로 제목을 하나씩 출력하면 되겠죠. 우리는 웹툰 제목을 터미널 cmd 창에서 출력하고 엑셀 파일로 저장해보겠습니다.

여기서 자주 사용하는 함수는 BeautifulSoup 클래스의 find() 메소드와 find_all() 메소드입니다. find() 함수는 HTML 문서에서 가장 처음으로 나오는 태그(우리가 선택한 태그) 1개를 반환합니다. find_all() 메소드는 HTML 문서에서 우리가 지정한 모든 태그를 찾아줍니다. 이들 함수 외에도 CSS Selector를 사용할 수도 있습니다. CSS Selector에 대한 자세한 설명은 공식 홈페이지의 CSS Selector 사용하기 부분을 참조하시면 됩니다.

그럼 전체 코드를 확인해볼까요?

python import csv import requests from bs4 import BeautifulSoup url = “https://comic.naver.com/webtoon/weekday” filename = “네이버 웹툰 인기 순위.csv” f = open ( filename , “w” , encoding = “utf-8-sig” , newline = “” ) writer = csv . writer ( f ) columns_name = [ “순위” , “웹툰명” ] writer . writerow ( columns_name ) res = requests . get ( url ) res . raise_for_status ( ) soup = BeautifulSoup ( res . text , “lxml” ) cartoonsBox = soup . find ( ‘ol’ , attrs = { “class” : “asideBoxRank” } ) cartoons = cartoonsBox . find_all ( ‘a’ ) i = 1 for cartoon in cartoons : title = cartoon . get ( “title” ) print ( f” { str ( i ) } 위: { title } ” ) data = [ str ( i ) , title ] writer . writerow ( data ) i += 1

위 코드를 실행하면 다음과 같은 csv 파일이 만들어집니다.

네이버 웹툰 인기 순위를 엑셀 파일로 저장 | Snug Archive

지금까지 우리는 원하는 정보를 웹 페이지에서 가져오는 실습을 해보았습니다. 그럼 같은 주제의 내용이 여러 페이지에 담겨있다면 어떻게 할까요? 여러 개의 웹 페이지를 이동하면서 위에서 배운 코드를 페이지의 숫자만큼 실행해야 할까요?

제목을 가져올 때 사용했던 반복문처럼 다시 반복문을 통해 이 문제를 해결할 수 있습니다. 이번에는 여러 페이지에서 정보를 한 번에 가져오는 실습을 해보겠습니다.

영화 사이트에서 드라마 정보 가져오기

우리는 영화 평점 사이트에서 셜록(Sherlock) 드라마 시리즈 정보를 가져오고 싶습니다. 드라마에는 총 4개의 시즌이 있고 각 시즌에는 3개에서 4개의 에피소드가 있습니다. 우리는 아래 화면에서 빨간색으로 표시된 부분에서처럼 시즌 차수, 에피소드명, 평점, 평점 수를 가져오려고 합니다. 그리고 이 작업을 총 4개 웹 페이지에서 해야 하죠.

IMDB 셜록(Sherlock) 시리즈 정보 | Snug Archive

그럼 url이 어떤 구성으로 이루어져 있는지를 파악해야 합니다. 이 웹페이지의 URL 주소를 보시면 아래와 같이 ? 다음에 시즌을 표기하고 있습니다. 아래 season=1 이라고 되어있는 것을 확인할 수 있죠?

IMDB 셜록 시즌 1 URL 주소 | Snug Archive

우리는 이 url 주소가 season에 따라 총 4개 있다는 것을 짐작할 수 있습니다. 나머지 season의 url 주소는 season=1 에서 숫자 부분만 바꾼 것일 것입니다. 그럼 우리는 시즌1에서 만든 웹 스크래핑 코드를 url 주소의 마지막 숫자 부분만 바꾸어서 반복문으로 가져오면 되겠네요. 이를 코드로 표현하면 다음과 같습니다.

python for i in range ( 1 , 5 ) : url = “https://www.imdb.com/title/tt1475582/episodes?season={}” . format ( i )

여기서는 season(주황색 글씨로 표시된 url의 마지막 부분) 옆에 있는 대입 연산자 = 다음에, 시즌 차수가 들어갈 자리를 대괄호 {} 처리하고 반복문과 format함수를 통해 숫자만 바뀌도록 만들었습니다.

그럼 먼저 결과부터 확인해보겠습니다. 코드를 통해 만들어진 엑셀 파일을 열었을 때 아래와 같은 결과를 확인하면 성공하신 겁니다.

IMDB 셜록 시즌 1 URL 주소 | Snug Archive

답을 확인하시기 전에 먼저 스스로 해보신다면 더 빠르게 스크래핑 코드를 익히실 수 있을 것입니다. 전체 코드는 다음과 같습니다.

python import csv import requests from bs4 import BeautifulSoup filename = “셜록 시즌 정보.csv” f = open ( filename , “w” , encoding = “utf-8-sig” , newline = “” ) writer = csv . writer ( f ) attributes = [ “시즌” , “제목” , “리뷰수” , “평점” ] writer . writerow ( attributes ) for season in range ( 1 , 5 ) : url = “https://www.imdb.com/title/tt1475582/episodes?season={}” . format ( season ) res = requests . get ( url ) res . raise_for_status ( ) soup = BeautifulSoup ( res . text , “lxml” ) season = soup . find ( “h3” , { “id” : “episode_top” } ) . get_text ( ) [ – 1 ] episodes = soup . find_all ( “div” , attrs = { “itemprop” : “episodes” } ) for episode in episodes : title = episode . find ( “a” , attrs = { “itemprop” : “name” } ) . get_text ( ) review = episode . find ( “span” , attrs = { “class” : “ipl-rating-star__total-votes” } ) . get_text ( ) [ 1 : – 1 ] rate = episode . find ( “span” , attrs = { “class” : “ipl-rating-star__rating” } ) . get_text ( ) data_rows = [ season , title , review , rate ] writer . writerow ( data_rows )

여기에 데이터 시각화 라이브러리인 Seaborn(씨본)을 이용해 시즌별 회차의 평점 분포와 평균을 시각화해보겠습니다. 각 시즌의 회차는 pandas의 cumcount 함수를 이용해 추가했습니다. Seaborn 사용법은 파이썬 데이터 시각화 Seaborn 사용법 기초편를 참조해주세요. 만든 그래프는 다음과 같습니다.

Seaborn으로 시각화한 셜록(Sherlock) 시즌별 평점 그래프 | Snug Archive

셜록 시리즈의 전체 시즌 중 시즌2의 평균 평점이 가장 높은 것을 알 수 있습니다. 전체 에피소드 중에서는 시즌2의 3화(The Reichenbach Fall)가 가장 재미있는 회차로 평가되었네요.

지금까지 우리는 웹 크롤링과 웹 스크래핑의 정의 및 각 용어의 차이, 웹 스크래핑을 하기 위한 기본 환경 설정, 그리고 파이썬 코드를 통해 웹 스크래핑을 직접 실습해보았습니다. 아이디어만 있다면 웹 스크래핑을 할 수 있는 대상은 정말 다양할 것입니다.

웹 스크래핑에 대해 더 공부하고 싶은 분들은 나도코딩님의 웹 스크래핑 강의를 추천드립니다. 강의를 들으시면서 다양한 예제를 접하신다면 더 다양한 분야에서 웹 스크래핑을 잘 할 수 있게 될 것입니다. 다음에는 또 다른 주제를 가지고 웹 스크래핑을 실습해보겠습니다. 파이썬으로 웹 스크래핑을 할 수 있게 되신 것을 축하합니다. 긴 글 읽으시느라 수고 많으셨습니다.

참고 문헌

Python) 파이썬 BeautifulSoup4를 이용해 웹 크롤링 예제 만들어 보기

반응형

웹 크롤링 예제 – 오늘의 요약

저번 포스팅에서는 이미지 크롤링 프로그램을 만들어 보았다.

이와 같이, 파이썬을 이용해 웹사이트의 정보를 크롤링 해오려면

Beautiful Soup 4 라는 라이브러리를 사용해야 한다.

bs4 라는 명칭으로 사용되는 이 라이브러리는,

웹사이트의 html이나 css같은 정보를

모두 끌어모아 주는 역할을 해준다.

만약, bs4를 설치하지 않았거나 라이브러리를 설치해보지 않은 입문자라면

지금부터 따라 해보자.

우선

실행

윈도우 시작키 우클릭 -> 실행 혹은 키보드 윈도우키 + R

을 해서 실행을 켠다.

그리고, cmd 라고 친 후 확인을 누른다.

“명령 프롬포트” 를 실행하는 과정이다.

그리고 명령 프롬포트가 실행되면

pip install bs4

라고 입력해준다.

pip는 파이썬을 불러오는 명령어이고, install 은 라이브러리를 설치하라는 명령어

bs4는 BeautifulSoup4의 명칭이다.

pip install bs4

그러면 이렇게 명령어가 쭈우우욱 뜨고 설치가 완료될 것이다.

물론 나는 이미 설치되어 있기 때문에 화면이 좀 다르게 나온다.

라이브러리 설치가 이렇게 간단하게 이루어지니

파이썬의 장점이 부각되는 것 같다.

그럼 시작해 보겠다.

우선 프로그램의 시작을 알리는 인트로 멘트 부터 만들어 보겠다.

위 포스팅에서 작성했듯이

datetime 모듈을 이용해 오늘 날짜를 표출해 줄 것이다.

# 웹크롤링 프로젝트 # https://h-glacier.tistory.com/ import datetime from bs4 import BeautifulSoup import urllib.request now = datetime.datetime.now() nowDate = now.strftime(‘%Y년 %m월 %d일 %H시 %M분 입니다.’) print(”

※ Python Webcrawling Project 1 ※

“) print(‘ 환영합니다, ‘ + nowDate) print(‘ 오늘의 주요 정보를 요약해 드리겠습니다.

‘)

datetime 모듈에 관한 소스는 윗 포스팅에서 다뤘으니 생략하도록 하겠다.

그리고 이제 urllib.request

라는 라이브러리를 import 해준다.

urllib 라이브러리는 파이썬에 기본내장 되어 있기 때문에

따로 설치할 필요가 없다.

# 오늘의 날씨 print(‘ ○>> #오늘의 #날씨 #요약

‘) webpage = urllib.request.urlopen(‘https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%EC%84%9C%EC%9A%B8%EB%82%A0%EC%94%A8’) soup = BeautifulSoup(webpage, ‘html.parser’) temps = soup.find(‘span’,”todaytemp”) cast = soup.find(‘p’,”cast_txt”) print(‘–> 서울 날씨 : ‘ , temps.get_text() , ‘℃’ , cast.get_text()) webpage = urllib.request.urlopen(‘https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%EB%8C%80%EA%B5%AC+%EB%82%A0%EC%94%A8’) soup = BeautifulSoup(webpage, ‘html.parser’) temps = soup.find(‘span’,”todaytemp”) cast = soup.find(‘p’,”cast_txt”) print(‘–> 대구 날씨 : ‘ , temps.get_text() , ‘℃’ , cast.get_text()) webpage = urllib.request.urlopen(‘https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EB%B6%80%EC%82%B0+%EB%82%A0%EC%94%A8&oquery=%EB%8C%80%EA%B5%AC+%EB%82%A0%EC%94%A8&tqi=UrZy%2Bsp0YidssAyki54ssssssKC-251380’) soup = BeautifulSoup(webpage, ‘html.parser’) temps = soup.find(‘span’,”todaytemp”) cast = soup.find(‘p’,”cast_txt”) print(‘–> 부산 날씨 : ‘ , temps.get_text() , ‘℃’ , cast.get_text()) print(‘

‘)

우선, 오늘의 날씨를 크롤링 해오는 소스코드 이다.

이는 네이버에 ‘서울 날씨’, ‘대구 날씨’, ‘부산 날씨’ 를 검색하면 나오는 정보를

크롤링 해오는 것이다.

우선 내가 크롤링 하고 싶은 부분의 html 값을 찾아내야 한다.

나는 이 부분을 크롤링 해와서, (14’c 맑음, 어제보다 2′ 낮아요) 이렇게 구현 하고 싶다.

자, 그럼 이제 소스를 추출 해 보자.

이 사이트에서 F12를 누른다.

그럼 “개발자 도구” 가 열릴 것이다.

빨간색 동그라미 친 버튼을 누른다.

그러면 내가 클릭한 부분의 소스코드를 뽑아준다.

보면 class=”todaytemp” 라는 것이 보인다.

이 클래스 값을 이용해 크롤링 하는 것이다.

이 부분은 cast_txt 이다.

그러면 이제 파이썬으로 넘어가서 코딩해보자!

위에 코드를 적어놨는데 쪼개서 다시 보자.

print(‘ ○>> #오늘의 #날씨 #요약

‘) webpage = urllib.request.urlopen(‘https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%EC%84%9C%EC%9A%B8%EB%82%A0%EC%94%A8’) soup = BeautifulSoup(webpage, ‘html.parser’) temps = soup.find(‘span’,”todaytemp”) cast = soup.find(‘p’,”cast_txt”) print(‘–> 서울 날씨 : ‘ , temps.get_text() , ‘℃’ , cast.get_text())

webpage 라는 변수에, urllib.request.urlopen(“크롤링 하고자 하는 링크”) 를 통해서 웹페이지를 정보를 저장해주자.

그리고 우리가 처음에 설치했던 bs4를 사용할 시간이다.

soup라는 변수에 BeautifulSoup(webpage, ‘html.parser’) 를 이용해서,

webpage 변수에 담아둔 html 정보를 쫘아악 크롤링 해온다.

그러면 이제 soup 변수에는 웹사이트의 html 코드가 온전히 담겨있다.

temps = soup.find(‘span’, “todaytemp”)

이부분이 제일 중요하고 핵심이다.

이제 temps 라는 변수에, soup에 담긴 html 코드 중

태그의 ‘todaytemp’ 클래스를 찾아서 담아주는 것이다.

밑의 cast 변수에는

태그의 ‘cast_txt’ 클래스를 찾아 담아준다.

그리고 print를 이용해서

찾아낸 모든 값을 구현한다.

어라? 결과를 보면 뭔가가 이상하다.

html 소스가 같이 불러와진다.

이는 당연한 결과이다.

bs4에서 html소스를 모두 크롤링해서 그중 span, p태그의 특정 클래스만 뽑아온 것이기 때문에

결과값에는 모든 소스코드가 같이 저장된다.

그럼 어떻게 해야하냐고?

뽑아온 temps와 cast 변수에 get_text() 를 붙이면 된다.

이는 소스를 모두 제거하고 문자데이터만 불러오는 함수이다.

그러면 우리가 원하던 대로 깔끔하게 크롤링 된다.

그러면 첫번 째 메뉴였던

오늘의 날씨 요약은 완료되었다.

그럼 이제 나머지 부분은 모두 스스로 해결 할 수 있을 것이다.

이 부분을 한번 스스로 해결 해보자.

나는 http://ncov.mohw.go.kr/ 질병관리본부 공식 홈페이지를 통해 크롤링했다.

# 오늘의 코로나 현황 # https://h-glacier.tistory.com/ print(‘ ○>> #오늘의 #국내 #코로나19 #현황

‘) webpage = urllib.request.urlopen(‘http://ncov.mohw.go.kr/’) soup = BeautifulSoup(webpage, ‘html.parser’) dayconfirm = soup.find(‘span’,”data1″) allinfo = soup.find(‘span’, ‘num’) print(‘ –> 오늘의 신규 확진자 : ‘ , dayconfirm.get_text() , ‘

–> 현재까지 확진자 : ‘, allinfo.get_text(),’

‘)

날씨 크롤링 한 소스코드와 별 다를바 없다.

빨간색 강조한 부분을 크롤링 해 온 것이다.

이렇게 매우 간단하고 간결한 코드로

웹페이지의 내가 원하는 부분을 모두 크롤링 해 올 수 있다.

HTML과 CSS를 조금이라도 공부해본 적이 있는 사람이라면

파이썬 웹크롤링 예제는 추가 공부 없이 쉽게 건드릴 수 있을 것이다.

다음, 오늘의 핫 토픽은

네이버의 연합뉴스 속보 칸에서 따왔다.

이 부분도 스스로 해결 해보려고 노력하고

안되면 내 소스코드를 참고하자.

힌트는 위의 예제에서 쓴 find 와 다르게

find_all 이라는 함수를 사용한다.

find는 젤 먼저 나오는 하나만 찾아주는거라면

find_all은 전체 페이지에 있는 모든 것을 크롤링 해준다.

# 오늘의 핫토픽 print(‘ ○>> #오늘의 #핫토픽 #헤드라인

‘) webpage = urllib.request.urlopen(‘https://www.naver.com/’) soup = BeautifulSoup(webpage, ‘html.parser’) for temps in soup.find_all(‘a’,”issue”): print(‘–> ‘ , temps.get_text()) print(‘

‘)

find_all을 사용한것과, 이를 통해 찾은 값을 모두 뿌려주기 위해 반복문 for를 사용한 것이

가장 큰 차이다.

그럼 마지막, 오늘의 음원 TOP10

이부분은 어떻게 처리했을까?

멜론 TOP10을 하려고했지만,

멜론 사이트에서는 크롤링 봇의 접근을 차단하여 작동하지 않는다.

그래서 네이버 뮤직 TOP10을 끌어왔다.

https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EC%9D%8C%EC%9B%90%EC%B0%A8%ED%8A%B8&oquery=%EB%A9%9C%EB%A1%A0%EC%B0%A8%ED%8A%B8&tqi=UrZ0HsprvN8ssK5ZP%2BsssssstVh-314088

이 페이지를 이용해 크롤링 해보자.

이것도 위의 예제와 마찬가지로 반복문과 find_all 을 사용한다.

# 오늘의 음원 TOP10 # https://h-glacier.tistory.com/ print(‘ ○>> #오늘의 #음원 #종합 #TOP10

‘) webpage = urllib.request.urlopen(‘https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EC%9D%8C%EC%9B%90%EC%B0%A8%ED%8A%B8&oquery=%EB%A9%9C%EB%A1%A0%EC%B0%A8%ED%8A%B8&tqi=UrZ0HsprvN8ssK5ZP%2BsssssstVh-314088’) toptenlist = [] artistlist = [] Rank = 10 soup = BeautifulSoup(webpage, ‘html.parser’) for topten in soup.find_all(‘div’,”title”): toptenlist.append(topten.get_text()) for artist in soup.find_all(‘a’,”singer”): artistlist.append(artist.get_text()) for i in range(Rank): print(‘ – %2d위 : %s – %s’%(i+1, artistlist[i], toptenlist[i]))

이렇게 된다.

위의 예제와 다른점은,

find_all 해서 나온값을 리스트에 담아서 하나씩 뽑아주는 것이다.

노래의 제목과 가수명을 따로 크롤링 해와야 하기 때문에

이를 한번에 print 해주려면

리스트에 담아서

반복문으로 동시에 뽑아주어야 하기 때문이다.

총 10개를 뽑을 것이기 떄문에 Rank변수에 10을 담고

반복문이 rank까지 실행되도록 해준다.

i+1, artistlist[i], toptenlist[i]

그러면 이부분이

1, artistlist[0], toptenlist[0]

2, artistlist[1], toptenlist[1]

,

,

,

이런식으로 진행되어

print 할 값에는

1위 : 아이유 – 에잇

이런식으로 나올 수 있게 되는 것이다.

완성

그럼 우리가 처음에 만들려고 했던 그 프로그램이

똑같이 완성 되었다.

이렇게 bs4의 기본 사용법과

반복문과 함께 사용하는 법을 깨닫게 되면

거의 모든 사이트들의 정보를 크롤링 할 수 있는 능력을 가지게 된다.

더 궁금한 점이 있으면 댓글로 물어보면 될 것 같고

도움이 되었으면 공감이나 댓글 달아 주었으면 좋겠다 🙂

반응형

2.6 사이트 정보 추출하기 – beautifulsoup 사용법 (1)

BeautifulSoup가 필요한 이유

request.text를 이용해 가져온 데이터는 텍스트형태의 html 입니다.

텍스트형태의 데이터에서 원하는 html 태그를 추출할 수 있을까요?

이를 쉽게 할 수 있게 도와주는 녀석이 바로 “뷰티풀수프”입니다.

즉, html을 수프객체로 만들어서 추출하기 쉽게 만들어줘요.

💻지금까지 이렇게 친절하게 설명하는 코딩 강의는 없었다

[이것이 진짜 크롤링이다 – 기본편]

💵코딩 실력 향상 100% 보장, 실전 파이썬 데이터 수집 강의 (도움 안되면 환불가능)

[이것이 진짜 크롤링이다 – 실전편]

BeautifulSoup 설치

pip install beautifulsoup4

BeautifulSoup 사용법

import requests from bs4 import BeautifulSoup url = ‘https://kin.naver.com/search/list.nhn?query=%ED%8C%8C%EC%9D%B4%EC%8D%AC’ response = requests.get(url) if response.status_code == 200: html = response.text soup = BeautifulSoup(html, ‘html.parser’) print(soup) else : print(response.status_code)

네이버 지식인에 파이썬을 검색한 url 입니다. 응답 코드가 200 일때, html 을 받아와 soup 객체로 변환 합니다.

네이버 지식인 크롤링 예제

네이버 지식인에 “파이썬”을 검색하면 첫 번째로 나오는 제목을 가져오려면 어떻게 할까요?

먼저, 구글 개발자 도구를 사용할줄 알아야해요!!! 제가 친절하게 알려 드리겠습니다.

크롬 브라우저를 열고 “https://kin.naver.com/search/list.nhn?query=%ED%8C%8C%EC%9D%B4%EC%8D%AC” 주소로 가봅시다!

그리고 f12 버튼을 눌러보세요.

오른쪽에서 뿅하고 나오는게 바로 구글 개발자 도구입니다. (크롤링을 도와줄 아주 멋진 녀석이죠)

여러분에게 필요한 건 원하는 html 요소가 어디있는지 찾아주는 inspector 기능입니다

사용방법은 이미지에 첨부할께요

찾은 html에 copy selector 기능을 이용해 봅시다.

Css 선택자를 자동으로 찾아주는 엄청난 기능입니다.

html에 오른쪽 클릭을 한 후 Copy -> Copy Selector 를 선택해 줍니다.

이제 클립보드에 css 선택자가 복사되었는데요.

이를 코드에 적용해 보겠습니다.

import requests from bs4 import BeautifulSoup url = ‘https://kin.naver.com/search/list.nhn?query=%ED%8C%8C%EC%9D%B4%EC%8D%AC’ response = requests.get(url) if response.status_code == 200: html = response.text soup = BeautifulSoup(html, ‘html.parser’) title = soup.select_one(‘#s_content > div.section > ul > li:nth-child(1) > dl > dt > a’) print(title) else : print(response.status_code)

select_one 은 하나의 html 요소를 찾는 함수인데, css 선택자를 사용해서 찾을 수 있습니다. 복사한 css 선택자를 select_one 함수의 인자로 넣어주세요.

결과물 파이썬배우기 쉬운곳 찾아요!!

텍스트만 뽑아오고 싶다면 get_text() 함수를 이용하면 됩니다.

print(title.get_text())

어때요! 사이트에서 원하는 정보를 파이썬으로 가져오다니 정말 놀랍지 않나요?

다음 장에서는 네이버 지식인의 제목 10개를 모두 가져오는 방법에 대해서 알아보도록 하겠습니다.

So you have finished reading the 파이썬 웹 크롤링 예제 topic article, if you find this article useful, please share it. Thank you very much. See more: 파이썬 웹크롤링 오픈소스, 파이썬 웹 크롤링 selenium, 파이썬 웹 크롤링 패키지, 웹크롤링 활용 사례, 파이썬 네이버 크롤링, 파이썬 크롤링 코드, 파이썬 BeautifulSoup, 파이썬 크롤링 하는 법

Leave a Comment