brunch

You can make anything
by writing

C.S.Lewis

by 이종우 Peter Lee Jan 04. 2019

 [번역] web scraping using R

R 을 이용한 웹스크립핑 소개

URL : https://medium.freecodecamp.org/an-introduction-to-web-scraping-using-r-40284110c848


R을 이용한 웹 스크 레이 핑에 대한 소개



Hiren Patel수행원

2018 년 10 월 25 일



전자 상거래가 활성화되면서 기업은 온라인에 진출했습니다. 고객도 온라인에서 제품을 찾습니다. 오프라인 마켓 플레이스와 달리 고객은 실시간으로 다른 장소에서 판매되는 제품의 가격을 비교할 수 있습니다.


따라서 경쟁 가격 정책은 비즈니스 전략에서 가장 중요한 부분이되었습니다.


제품 가격을 경쟁력 있고 매력적으로 유지하려면 경쟁 업체가 설정 한 가격을 모니터링하고 추적해야합니다. 경쟁사의 가격 결정 전략이 무엇인지 아는 경우 가격 결정 전략을 적절히 조정하여 경쟁 전략을 능가 할 수 있습니다.

따라서 가격 모니터링은 전자 상거래 비즈니스를 운영하는 과정의 중요한 부분이되었습니다.

가격을 비교하기 위해 데이터를 확보하는 방법을 궁금해 할 수 있습니다.


가격 비교에 필요한 데이터를 얻는 가장 중요한 3 가지 방법


1. 가맹점의 피드


당신이 알고 있을지도 모르다, 인터넷에 유효한 몇몇 가격 비교 위치가있다. 이러한 사이트는 데이터를 직접 얻고 가격 비교를 위해 사용하는 비즈니스와 일종의 이해 관계가 있습니다.


이러한 기업은 API를 배치하거나 FTP를 사용하여 데이터를 제공합니다. 일반적으로 추천 수수료는 가격 비교 사이트를 재정적으로 실용적으로 만드는 요소입니다.


2. 타사 API의 제품 피드


반면에 API를 통해 전자 상거래 데이터를 제공하는 서비스가 있습니다. 이러한 서비스가 사용될 때 제 3자는 데이터 양을 지불합니다.


3. 웹 스크래핑


웹 스크래핑 은 인터넷에서 웹 데이터를 가져 오는 가장 강력하고 신뢰할 수있는 방법 중 하나입니다. 전자 상거래 사이트에서 제품 데이터를 가져 오는 효율적인 방법이기 때문에 가격 인텔리전스에 점점 더 많이 사용되고 있습니다.


첫 번째 및 두 번째 옵션에 액세스하지 못할 수도 있습니다. 따라서 웹 스크래핑이 귀하의 구조에 올 수 있습니다. 웹 스크래핑을 사용하여 데이터의 힘을 활용하여 비즈니스에 대한 경쟁력있는 가격에 도달 할 수 있습니다.


웹 스크래핑은 현재 시장 시나리오의 현재 가격을 얻는 데 사용될 수 있으며, 전자 상거래는보다 일반적으로 얻을 수 있습니다. 웹 스크래핑을 사용하여 전자 상거래 사이트에서 데이터를 가져옵니다. 이 블로그에서는 특정 브랜드에 따라 모든 카테고리의 Amazon에서 제품의 이름과 가격을 긁는 방법을 배우게됩니다.


Amazon에서 정기적으로 데이터를 추출하면 가격 정책의 시장 동향을 추적하고 이에 따라 가격을 설정할 수 있습니다.


목차

가격 비교를위한 웹 스크래핑

R의 웹 스크래핑

이행

끝말


1. 가격 비교를위한 웹 스크래핑


시장의 지혜가 말했듯이 가격은 모든 것입니다. 고객은 가격을 기준으로 구매 결정을 내립니다. 그들은 가격에 대한 제품의 품질에 대한 이해를 바탕으로합니다. 요컨대, 가격은 고객과 시장을 움직이는 요인입니다.


따라서 가격 비교 사이트 는 큰 수요가 있습니다. 고객은 브랜드 전체에서 동일한 제품의 가격을보고 전체 시장을 쉽게 탐색 할 수 있습니다. 이 가격 비교 웹 사이트는 다른 사이트에서 동일한 제품의 가격을 추출합니다.


가격과 함께 가격 비교 웹 사이트는 제품 설명, 기술 사양 및 기능과 같은 데이터를 스크랩합니다. 비교 방법으로 한 페이지에 전체 정보 영역을 투사합니다.


이것은 잠재 구매자가 자신의 검색에서 묻는 질문에 대한 대답입니다. 이제 장래의 구매자는 기능, 지불 및 운송 옵션과 같은 정보와 함께 제품 및 가격을 비교하여 사용 가능한 최상의 거래를 식별 할 수 있습니다.


가격 최적화는 그러한 기법이 이익 마진을 10 % 향상시킬 수 있다는 점에서 비즈니스에 미치는 영향을 가지고 있습니다.


전자 상거래는 모두 경쟁력있는 가격 정책이며 다른 비즈니스 영역에도 널리 퍼져 있습니다. 여행의 경우를 가져 가라. 이제 여행 관련 웹 사이트 도 실시간으로 항공사 웹 사이트의 가격을 스크랩하여 다른 항공사의 가격 비교를 제공합니다.


이 문제는 소스 사이트에서 가격이 계속 변하여 실시간으로 데이터를 업데이트하고 매 초마다 최신 상태를 유지해야한다는 단점이 있습니다. 가격 비교 사이트는 Cron 작업을 사용하거나보기 시간에 가격을 업데이트합니다. 그러나 사이트 소유자의 구성에 따라 달라집니다.


이것은이 블로그가 당신을 도울 수있는 곳입니다 - 필요에 맞게 사용자 지정할 수있는 스크랩 스크립트를 만들어 낼 수 있습니다. 여러 웹 사이트에서 제품 피드, 이미지, 가격 및 기타 모든 관련 세부 정보를 추출 할 수 있습니다. 이를 통해 가격 비교 사이트를위한 강력한 데이터베이스를 만들 수 있습니다.


2. R에서의 웹 스크래핑


웹 데이터를 가져 오는 것이 쉽지 않기 때문에 가격 비교가 어려워집니다. HTML, XML 및 JSON과 같은 기술을 통해 콘텐츠를 배포합니다.


따라서 필요한 데이터를 얻으려면 이러한 여러 기술을 효과적으로 탐색해야합니다. R은 이러한 기술에 저장된 데이터에 액세스하는 데 도움을 줄 수 있습니다. 그러나 시작하기 전에 R에 대한 심층적 인 이해가 필요합니다.


R은 무엇입니까?


웹 스크래핑은 많은 사람들이 수행하지 않는 고급 작업입니다. R을 이용한 웹 스크래핑은 확실히 기술 및 고급 프로그래밍입니다. 이러한 방식으로 웹 스크 레이 핑을 수행하려면 R의 적절한 이해가 필수적입니다.


우선, R은 통계 계산 및 그래픽을위한 언어입니다. 통계 학자와 데이터 광부는 진화하는 통계 소프트웨어와 데이터 분석에 초점을 맞춰 R을 많이 사용합니다.


R이 이러한 사람들 사이에서 가장 좋아하는 한 가지 이유는 필요에 따라 수학 기호 및 수식을 포함하여 작업 할 수있는 음질입니다.


R은 데이터 마이닝 작업을 처리 할 수있는 방대한 기능과 패키지를 제공하기 때문에 훌륭합니다.


rvest, RCrawler 등은 데이터 수집 프로세스에 사용되는 R 패키지입니다.


이 부분에서는 R을 사용하여 웹 스크래핑을 수행하는 데 필요한 도구의 종류를 확인합니다. Amazon 웹 사이트의 유스 케이스를 통해 제품 데이터를 가져 와서 JSON 형식으로 저장하려고합니다.


요구 사항


이 유스 케이스에서는 R에 대한 지식이 필수적이며 R에 대한 기본적인 지식이 있다고 가정합니다 . 적어도 RStudio와 같은 하나의 R 인터페이스를 알고 있어야합니다. 기본 R 설치 인터페이스가 정상입니다.


R 및 기타 관련 인터페이스에 대해 잘 모르는 경우이 자습서를 진행해야합니다 .


이제 우리가 사용할 패키지가 어떻게 설치되는지 이해합시다.


패키지 :


1. rvest


Hadley Wickham은 R. rvest에서 웹 스크 레이 핑을 위해 rvest 패키지를 작성하여 웹 페이지에서 필요한 정보를 추출하는 데 유용합니다.


이와 함께 selectr 및 'xml2'패키지 도 설치해야 합니다.


설치 단계 :


install.packages ( 'selectr')


install.packages ( 'xml2')


install.packages ( 'rvest')


rvest에는 기본적인 웹 스크래핑 기능이 포함되어있어 매우 효과적입니다. 다음 기능을 사용하여 웹 사이트에서 데이터를 추출합니다.


read_html(url) : 지정된 URL에서 HTML 컨텐트를 긁습니다.


2. stringr


stringr은 데이터 정리 및 준비와 관련된 작업을 생각할 때 도움이됩니다.


stringr에는 네 가지 필수 기능 세트가 있습니다.


stringr 함수는 문자열 내의 개별 문자를 문자 벡터로 처리 할 수 있으므로 유용합니다.


설치


install.packages(‘stringr’)


3. jsonlite


jsonline 패키지를 유용하게 만드는 이유는 JSON 파서 / 생성기가 웹용으로 최적화되어 있기 때문입니다.


이는 JSON 데이터와 중요한 R 데이터 유형 간의 효과적인 매핑을 가능하게 해주기 때문에 중요합니다. 이를 사용하여 유형이나 정보를 잃지 않고 수동 데이터 논쟁없이 R 객체와 JSON간에 변환 할 수 있습니다.


이것은 웹 API와 상호 작용하거나 JSON을 사용하여 R이 데이터를주고받을 수있는 방법을 만들고 싶다면 잘 작동합니다.


설치


install.packages(‘jsonlite’)


시작하기 전에 어떻게 작동하는지 봅시다.


처음에는 웹 사이트에 들어가는 코딩이 다르기 때문에 각 웹 사이트가 서로 다른 것을 분명히해야합니다.


웹 스크래핑은 이러한 데이터 패턴을 식별하고 사용하여 필요한 데이터를 추출하는 기술입니다. 브라우저는 HTML에서 웹 사이트를 사용할 수 있도록합니다. 웹 스크래핑은 단순히 브라우저에서 사용할 수있는 HTML을 파싱하는 것입니다.


웹 스크래핑은 일반적으로 다음과 같이 작동하는 일련의 프로세스를 가지고 있습니다.


R에서 페이지에 액세스


이제 더 잘 이해하기 위해 구현에 대해 살펴 보겠습니다.


3. 구현


구현하고 작동 원리를 살펴 보겠습니다. 아마존 웹 사이트에서 "One Plus 6"라는 휴대 전화 제품의 가격 비교를 마칩니다.


여기에서 볼 수 있습니다 .


1 단계 : 필요한 패키지로드


우리는 R 명령 프롬프트에서 콘솔을 시작하여 프로세스를 시작해야합니다. 일단 우리가 거기에 있다면, 우리는 아래와 같이 필요한 패키지를 적재해야합니다 :


#loading the package : 
> 라이브러리 (xml2) 
> 라이브러리 (rvest) 
> 라이브러리 (stringr)


2 단계 : Amazon에서 HTML 콘텐츠 읽기


# 스크랩 된 URL을 원하는 웹 사이트로 지정 
url <- 'https://www.amazon.in/OnePlus-Mirror-Black-64GB-Memory/dp/B0756Z43QS?tag=googinhydr18418-21&tag=googinkenshoo-21&ascsubtag=aee9a916- 6acd-4409-92ca-3bdbeb549f80 '


# 아마존 
웹 페이지 에서 HTML 컨텐츠 읽기 <- read_html (url) 이 코드에서는 지정된 URL에서 HTML 컨텐트를 읽고 해당 HTML을  webpage 변수에 할당 합니다.


3 단계 : Amazon에서 제품 세부 정보 긁기


이제 다음 단계로 웹 사이트에서 다음 정보를 추출합니다.


제목 : 제품의 제목. 
가격 : 제품 가격입니다. 
설명 : 제품 설명. 
등급 : 제품의 사용자 등급. 
크기 : 제품의 크기. 
색상 : 제품의 색상.


이 스크린 샷은 이러한 필드가 정렬되는 방법을 보여줍니다.




다음으로 Inspect 요소를 사용하여 데이터를 추출하는 HTML 태그 (예 : 제품 제목 및 가격)를 사용합니다.


HTML 태그의 클래스를 찾으려면 다음 단계를 사용하십시오.


=> 크롬 브라우저로 이동 => 이 URL 로 이동 => 오른쪽 클릭 => 요소 검사


참고 : Chrome 브라우저를 사용하지 않는 경우이 기사를 확인 하십시오 .


클래스 및 ID와 같은 CSS 선택기를 기반으로 HTML에서 데이터를 스크랩합니다. 제품 제목에 대한 CSS 클래스를 찾으려면 제목을 마우스 오른쪽 버튼으로 클릭하고 "Inspect"또는 "Inspect Element"를 선택해야합니다.




아래에서 볼 수 있듯이, 나는의 도움으로 제품의 제목을 추출 html_nodes 나는 제목의 ID를 전달하는 -  h1#title  - 및 webpage HTML 콘텐츠를 저장한다.


또한 제목 텍스트를 사용 html_text 하여 head () 기능 의 도움으로 제목 텍스트를 사용 하여 인쇄 할 수 있습니다


#scrape 제품 제목 
> title_html <- html_nodes (웹 페이지, 'h1 # 제목') 
> 제목 <- html_text (title_html) 
> 머리 (제목)


출력은 다음과 같습니다.




공백과 \ n을 사용하여 제품의 제목을 얻을 수 있습니다.


다음 단계는 str_replace_all() stringr 라이브러리의 함수를 사용하여 공백과 새 행을 제거하는 것입니다


# 모든 공백과 줄 바꿈 
str_replace_all (제목, "[\ r \ n]", "")


산출:




이제 우리는 같은 과정에 따라 제품의 다른 관련 정보를 추출해야합니다.


제품 가격 :


# 제품 가격을 긁어 
> price_html <- html_nodes (웹 페이지, 'span # priceblock_ourprice') 
> 가격 <- html_text (price_html)


# 공백을 제거하고 새 줄 
> str_replace_all (제목, "[\ r \ n]", "")


# 인쇄 가격 값 
> 머리 (가격)


산출:


제품 설명 :


# 스크랩 제품 설명 
> desc_html <- html_nodes (웹 페이지, 'div # productDescription') 
> desc <- html_text (desc_html)


# 새로운 줄과 공백을 대체하십시오. 
desc <- str_replace_all (desc, "[\ r \ n \ t]", "") 
> desc <- str_trim (desc) 
> head (desc)


산출:




제품의 등급 :


# scrape product rating > rate_html <- html_nodes (웹 페이지, 'span # acrPopover') 
> 비율 <- html_text (rate_html)


# rate <- str_replace_all (rate, "[\ r \ n]", "") 
> rate <- str_trim (rate)


# 제품의 인쇄 등급 
> 머리 (비율)


출력 :




제품의 크기 :


# 제품의 스크랩 크기 
> size_html <- html_nodes (웹 페이지, 'div # variation_size_name') 
> size_html <- html_nodes (size_html, 'span.selection') 
> size <- html_text (size_html)


# 텍스트에서 탭 제거 
> size <- str_trim (size)


# 제품 크기 인쇄 
> 머리 (크기)


산출:




제품 색상 :



color_html <- html_nodes (웹 페이지, 'div # variation_color_name') 
> color_html <- html_nodes (color_html, 'span.selection') 
> color <- html_text (color_html)


# 텍스트에서 탭 제거 
> color <- str_trim (color)


# 인쇄 제품 색상 
> 머리 (색상)


산출:




4 단계 : 다른 사이트의 제품 정보를 비교하는 데 사용할 수있는 모든 필드의 데이터를 성공적으로 추출했습니다.


데이터 프레임을 컴파일하고 구조를 검사하기 위해이를 컴파일하고 결합합시다.


# 데이터 프레임을 구성하기 위해 모든 목록을 통합 
product_data <- data.frame (Title = 제목, 가격 = 가격, 설명 = 설명, 평가 = 비율, 크기 = 크기, 색상 = 색상)


# 데이터 프레임의 구조 
str (product_data)


산출:




이 출력에서 데이터 프레임의 모든 스크랩 된 데이터를 볼 수 있습니다.


5 단계 : JSON 형식으로 데이터 저장 :


데이터가 수집되면 우리는 그것에 대한 비즈니스 통찰력을 비교, 분석 및 도달하는 등의 다양한 작업을 수행 할 수 있습니다. 이 데이터를 바탕으로 우리는 이것을 통해 기계 학습 모델을 학습 할 수 있다고 생각할 수 있습니다.


데이터는 추가 프로세스를 위해 JSON 형식으로 저장됩니다.


주어진 코드를 따르고 JSON 결과를 얻습니다.


# JSON 형식으로 변환 할 'jsonlite'라이브러리를 포함하십시오. 
> 도서관 (jsonlite)


# 데이터 프레임을 JSON 형식으로 변환 
> json_data <- toJSON (product_data)


# 인쇄물 출력 
> cat (json_data)


위의 코드 에서 dataframe 객체를 JSON 형식으로 변환하는 함수를 jsonlite  사용하기위한 라이브러리를 포함 시켰습니다 


toJSON()


이 과정이 끝나면 데이터를 JSON 형식으로 저장하고 인쇄했습니다. 
우리가 원하는 경우 추가 처리를 위해 데이터를 CSV 파일이나 데이터베이스에 저장할 수도 있습니다.


산출:




이 실제 사례에 따라 https://www.oneplus.in/6 에서 제품에 대한 관련 데이터를 추출하고 Amazon과 비교하여 제품의 공정 가치를 계산할 수도 있습니다. 같은 방법으로 데이터를 사용하여 다른 웹 사이트와 비교할 수 있습니다.


4. 노트 끝내기


보시다시피 R은 다른 웹 사이트의 데이터를 스크래핑하는 데 큰 도움을 줄 수 있습니다. R을 사용하는 방법에 대한 실용적인 그림을 통해 이제 직접 R을 탐색하고 Amazon 또는 기타 전자 상거래 웹 사이트에서 제품 데이터를 추출 할 수 있습니다.


주의를 요하는 말 : 특정 웹 사이트에는 긁힘 방지 정책이 있습니다. 과용하면 차단되고 제품 세부 정보 대신 captcha가 표시되기 시작합니다. 물론 다양한 서비스를 사용하여 보안 문자 주위에서 작업하는 방법을 배울 수도 있습니다. 그러나 데이터 스크래핑 의 적법성과 스크래핑 된 데이터로 수행하는 작업 을 이해해야합니다 .

작가의 이전글 효과적인 코드리뷰 가이드
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari