1. Web Scraping
웹 페이지에서 우리가 원하는 부분의 데이터를 수집해오는 것을 뜻합니다. 한국에서는 같은 작업을 크롤링 crawling 이라는 용어로 혼용해서 쓰는 경우가 많습니다.
(1) Web Scraping process
① request - response
② Parse and Extract
③ Download Data
(2) Web Scraping Tools
1. RroWebScraper
2. 크롬 익스텐션 WebScrapper.io(https://webscraper.io/)
(3) Web Scraping는 어디에 사용될까?
① 머신러닝 - 머신러닝은 많은 데이터를 공급해야합니다. 이런 데이터를 웹 스크래핑을 통해 모등 종류의 웹 데이터를 안정적인 방식으로 받기 때문에 기계 학습에 필수적입니다.
②웹 스크래핑은 전자 상거래 비즈니스에서 다양한 이미지와 제품 설명을 추출하는 데 매우 유용함
2. Web Crawling
원래는 크롤링은 자동화하여 주기적으로 웹 상에서 페이지들을 돌아다니며 분류/색인하고 업데이트된 부분을 찾는 등의 일을 하는 것입니다.
(1) Web Crawling Tools
1. 스크랩 (https://scrapy.org/)
웹사이트 크롤링에 널리 사용되는 고품질 웹 크롤링 및 스크래핑 프레임워크입니다. 데이터 마이닝, 데이터 모니터링, 자동화 테스트 등 다양한 용도로 사용할 수 있습니다.
2. 아파치 너치(https://nutch.apache.org/)
Apache Nutch 는 확장에 사용할 수 있는 매우 유용한 웹 크롤러 소프트웨어 프로젝트입니다. 특히 데이터 마이닝 분야에서 널리 사용됩니다. 데이터 분석가, 데이터 과학자, 응용 프로그램 개발자 및 웹 텍스트 마이닝 엔지니어는 다양한 응용 프로그램에 광범위하게 사용합니다. JAVA로 작성된 크로스 플랫폼 솔루션입니다.
(2)Web Crawling은 어디에 사용될까?
Google은 검색 결과를 제공하기 위해 매일 약 250억 개 이상의 페이지를 크롤링합니다. 웹 크롤러는 사용자가 찾고 있는 결과를 생성하기 위해 수십억 개의 웹 페이지를 크롤링합니다. 변화하는 사용자 요구에 따라 웹 크롤러도 이에 적응해야 합니다 웹 크롤러는 페이지를 정렬하고 콘텐츠 품질을 평가하며 최종 결과로 인덱싱을 수행하기 위해 다른 많은 기능을 수행합니다. 따라서 웹 크롤러는 검색 엔진의 기능, World Wide Web에 대한 액세스에 필수적이며 웹 스크래핑의 첫 번째이자 가장 중요한 부분이기도 합니다.
3. 파이썬으로 Web Scraping 해보기
(0) 스크래핑할 데이터는 바로 CU의 식품! 해당 URL 마지막의 gdIdx를 10개까지 구해보려고 한다.
https://cu.bgfretail.com/product/view.do?category=event&gdIdx=1
CU
24시간 편의점, 편의점 프랜차이즈, 편의점택배, 택배, 상품안내, 가맹 시스템, 창업 상담 제공.
cu.bgfretail.com
(1) 스크래핑을 편리하게 해줄 beautifulsoup4를 설치한다.
터미널에 아래 문구 입력
pip install beautifulsoup4 |
(2) 코드
import requests
from bs4 import BeautifulSoup
# 타겟 URL을 읽어서 HTML를 받아오고,
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
food_list =[]
for i in range(1, 10):
food_dict = {}
data = requests.get(f'https://cu.bgfretail.com/product/view.do?category=event&gdIdx={i}',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
food = soup.select_one('.prodDetail .prodDetail-e > p').text
price = soup.select_one('.prodInfo > dl dd.prodPrice > p > span').text
explain = soup.select_one('.prodInfo dl dd > ul.prodExplain > li').text
food_dict['name'] = food
food_dict['price'] = price
food_dict['explain'] = explain
food_list.append(food_dict)
print(*food_list)
{'name': '도)갈릭&양념치킨정식', 'price': '3,300', 'explain': '갈릭&양념치킨: -갈릭치킨: 향긋한 마늘소스에 치킨이 그대로 버무려진 상품/아몬드 슬라이스 추가'} {'name': '도)더블BIG정식', 'price': '3,900', 'explain': '1. 2단 형태의 정식 도시락:下단 밥(완두콩, 옥수수토핑), 上단 반찬(7찬 구성) 2. 반찬구성:총 7찬 구성1: 계란장조림, 양파&홍/청피망볶음, 볶음김치 구성2: 핫소시지, 치즈소시지, 새우튀김(머스타드소스 별첨) 구성3: 불갈비데리볶음'} {'name': '도)더블BIG요일정식', 'price': '3,900', 'explain': '더블BIG정식 2탄 : 요일별 구성이 다른 상품 운영 \r\n1) 월, 화 : 소불고기,가라아게, 생선튀김, 치즈소시지 \r\n2) 수, 목 : 제육볶음, 가라아게, 햄&계란구이, 떡갈비 \r\n3) 금, 토, 일 : 닭갈비, 가라아게, 새우튀김, 미트볼\t'} {'name': '도)뉴고추장삼겹살구이', 'price': '3,300', 'explain': '* 국민 모두가 좋아하는 삼겹살을 도시락으로 구성한 상품 * 매콤달콤 고추장 양념을 삼겹살 한장한잘 발라서 구운 상품'} {'name': '도)스팸구이', 'price': '3,300', 'explain': '국민 모두가 좋아하는 오리지날 "스팸"과 최고의 궁합 달걀후라이! 어묵볶음과 볶음김치 구성 \'\'고추장삼겹살구이\'\' 에 이은 종이박스 2탄'} {'name': '도)통등심돈가스정식', 'price': '3,800', 'explain': '두툼한 돈까스와 피클,볶음김치로 구성'} {'name': '도)더블BIG스테이크', 'price': '3,600', 'explain': '1. 도시락 1위 상품!! 더블BIG도시락 형태 추가 상품 2. 건강하고, 프리미엄 원재료 / 푸짐한 양 그대로!! - 함박스테이크&스파게티 - 스크램블마요, 포테이토튀김 - 모둠 야채 : 브로컬리, 컬리플라워, 미니당근 - 새우튀김&타르타르 소스'} {'name': '도)깐풍기&고추잡채정식', 'price': '3,600', 'explain': '맛있게 매운 깐풍기! 꽃빵과 먹을 수 있는 고추잡채! 다진돼지고기가 있는 짜장소스!'} {'name': '도)뉴소불고기정식', 'price': '3,000', 'explain': '대표도시락 소불고기정식 업그레이드! 합리적 가격! 푸짐한 한끼 식사! '}
출처 :https://dzone.com/articles/web-scraping-vs-web-crawling-whats-the-difference
Web Scraping vs Web Crawling: What’s the Difference? - DZone Web Dev
In this article, read an explanation of the differences between web scraping and web crawling.
dzone.com
Web Scraping(wikipedia) / Web Crawler(wikipedia)
'회고록' 카테고리의 다른 글
👩🏼💻TIL : 6. 서버사이드렌더링이 뭘까? (0) | 2022.09.19 |
---|---|
👩🏼💻TIL : 5. MongoDB를 써보자 (0) | 2022.08.17 |
👩🏼💻TIL : 3. 서버-클라이언트 통신 (0) | 2022.08.03 |
👩🏼💻TIL : 2. 회원 관리 @Test Case작성하기 (0) | 2022.07.31 |
👩🏼💻TIL : 1. Spring 웹 개발 (0) | 2022.07.30 |
댓글