간단한 5단계로 데이터를 스크랩하는 방법

게시 됨: 2020-02-17
목차
5가지 쉬운 방법으로 데이터를 스크랩하는 방법
1. 데이터 스크래핑을 위한 프로그래밍 언어 또는 도구 선택
2. 단일 웹 페이지 스크랩 및 구성 요소 분석
3. 데이터 정리 및 저장 전략 결정
4. 웹페이지 목록 생성 또는 데이터 스크래핑을 위한 정규식 작성
5. 코드 작성 및 테스트
대체 데이터 스크래핑 방법
Excel 필터 기능을 사용하여 데이터 스크랩
Microsoft Word의 Text-to-Columns 기능을 사용하여 데이터를 열별로 구분합니다.
Google 시트에서 IMPORTXML 사용
Google 스프레드시트에서 IMPORTHTML 사용
크롬 확장 프로그램 사용
결론

작업을 위해 얼마나 자주 웹사이트에서 데이터를 스크랩해야 하고 너무 고통스러워 보입니까? 이 블로그 게시물은 5가지 간단한 단계로 데이터를 스크랩하는 방법을 알려줍니다.

이 게시물은 웹 페이지 또는 PDF에서 데이터를 추출해야 하고 가능한 한 빠르고 고통 없는 프로세스를 원하는 소프트웨어 전문가를 위해 작성되었습니다. 데이터를 스크랩하는 방법에는 여러 가지가 있지만 이 기사에서는 XPath, 정규식, Beautiful Soup(BSA), Scrapy, PRL(Python Requests Library) 및 Selenium Webdriver와 같이 전문 개발자가 사용하는 가장 인기 있는 몇 가지 방법에 중점을 둡니다. 이러한 긁는 도구는 각각에 대해 제공된 지침에 따라 모두 쉽게 설치할 수 있습니다. 이러한 도구를 요약한 표가 아래에 포함되어 장단점을 설명하고 해당되는 경우 해당 도구에 대한 자세한 정보를 볼 수 있는 링크를 제공합니다. 이 표에는 내가 시도했고 완전성을 위해 포함된 인기가 없는 다른 방법이 포함되어 있습니다.

웹사이트의 데이터 스크랩은 모든 언어로 수행할 수 있습니다. 이 기사에서는 Python을 사용하여 데이터를 스크랩하는 방법을 보여줍니다. Python은 설치가 매우 쉽고 특히 구문이 Java, C 및 PHP와 유사하기 때문에 다른 프로그래밍 언어를 이미 알고 있는 경우 배우기 매우 쉽기 때문입니다. Python은 표에 설명된 데이터 스크래핑을 위한 여러 라이브러리를 지원합니다. 스크래핑은 목표 시장, 경쟁자 및/또는 고객에 대한 귀중한 통찰력을 제공하기 때문에 모든 사람이 사용법을 알아야 하는 도구입니다.

웹 스크래핑을 사용하면 다양한 유형의 데이터를 추출할 수 있습니다. 몇 줄의 코드를 작성하여 전자 상거래 웹 사이트의 가격이 포함된 부동산 목록 , 호텔 데이터 또는 제품 데이터 까지 크롤링할 수 있습니다 . 그러나 웹을 크롤링하고 데이터를 추출하려면 몇 가지 사항을 처리해야 합니다. 스크랩한 데이터가 사용 가능한 형식인지 확인하는 것이 중요합니다. 코드는 여러 웹사이트에서 데이터를 추출할 수 있습니다. 추출된 데이터는 깨끗하며 알고리즘을 실행할 때 잘못된 결과를 제공하지 않습니다. 즉, 코드를 작성하거나 웹사이트에서 데이터를 크롤링하는 소규모 웹 스크래핑 프로젝트를 만들려면 5가지 간단한 단계를 거쳐 수행할 수 있습니다.

데이터를 스크랩하는 5가지 쉬운 방법

5가지 쉬운 방법으로 데이터를 스크랩하는 방법

1. 데이터 스크래핑을 위한 프로그래밍 언어 또는 도구 선택

"인간은 그의 도구만큼 훌륭하다." 따라서 필요에 맞는 방식으로 웹 스크래핑을 위한 도구를 선택해야 합니다. 바로 사용 가능한 일부 소프트웨어는 사용하기 쉬워 보이지만 많은 구성 변경을 허용하지 않을 수 있습니다. 동시에 많은 도구에는 스크랩한 데이터를 데이터베이스나 클라우드에 저장하는 플러그인이 없을 수 있습니다. 오늘날 데이터 스크랩에 사용 되는 프로그래밍 언어 에는 Node.js, Python, Ruby 등이 있습니다. 그러나 이 중에서 Python 은 더 쉬운 학습 곡선, 간단한 구문, 여러 외부 라이브러리의 가용성 및 오픈 소스 언어 덕분에 가장 인기 있는 언어입니다.

웹 페이지를 크롤링하고, 웹 크롤링 스파이더를 만들고, 특정 시간 간격으로 스크래핑 작업을 실행하는 데 사용할 수 있는 BeautifulSoup Scrapy같은 여러 라이브러리가 있습니다. Python은 다른 시스템을 스크래핑 엔진과 통합할 때 엄청난 유연성을 허용합니다. 스크랩한 데이터를 로컬 컴퓨터, 데이터베이스, S3 Storage 에 쉽게 저장하거나 Word 또는 Excel 파일 에 덤프할 수도 있습니다.

2. 단일 웹 페이지 스크랩 및 구성 요소 분석

Amazon 의 수천 개의 제품 페이지에서 제품 정보를 스크랩하기 전에 페이지에 액세스하고 전체 Html 페이지를 가져와 분석하고 전략을 결정해야 합니다. HTML 페이지의 데이터는 태그의 특정 키-값 쌍 또는 태그 내의 텍스트 내에 있을 수 있습니다. BeautifulSoup과 같은 라이브러리를 사용하여 모든 웹페이지에서 데이터를 추출하려는 정확한 태그를 지정한 다음 루프에서 코드를 실행할 수 있습니다. 이렇게 하면 모든 단일 제품 웹 페이지에 대해 코드가 실행되고 동일한 정보(예: 가격 세부 정보)를 추출합니다.

3. 데이터 정리 및 저장 전략 결정

데이터 스크랩을 시작하기 전에도 데이터를 저장할 위치를 결정해야 합니다. 데이터를 저장하는 위치에 따라 데이터를 처리하는 방법이 달라지기 때문입니다. 여러 옵션을 사용할 수 있습니다. 스크래핑하는 데이터가 구조화되지 않은 상태에서 구조화되는지 여부에 따라 NoSQL과 SQL 데이터베이스 중에서 선택할 수 있습니다. 구조화되지 않은 데이터의 경우 속성 집합으로 구성된 행에 데이터를 저장할 수 있으므로 SQL 데이터베이스를 선택할 수 있습니다. 속성이 설정되지 않은 비정형 데이터의 경우 NoSQL 데이터베이스로 이동할 수 있습니다. 데이터를 저장할 데이터베이스와 관련하여 SQL의 경우 MySQL 또는 Postgres를 선택할 수 있습니다. Amazon RDS 는 데이터를 저장하고 사용량에 따라 비용을 지불할 수 있는 클라우드 데이터베이스를 제공합니다.

NoSQL의 경우 DynamoDb 또는 ElasticSearch 와 같은 매우 빠른 완전 관리형 솔루션 중 하나를 선택할 수 있습니다 . 다른 데이터베이스에는 빠른 검색을 제공하는 이점이 있으며 일부는 TB당 더 저렴한 스토리지를 제공합니다 . 선택하는 데이터베이스는 특정 사용 사례에 따라 달라집니다. 결정하기 전에 이에 대한 몇 가지 연구가 필요합니다. 스크랩한 이미지와 대용량 동영상을 저장해야 하는 경우 AWS S3 또는 Glacier 를 사용할 수 있습니다 . 후자는 방대한 양의 데이터를 아카이브된 형식으로 저장하려는 경우에 사용됩니다. 전자가 더 많이 사용되는 솔루션이지만 자주 액세스할 필요는 없습니다. 이것은 온라인 하드 드라이브와 같은 역할을 합니다. 폴더를 만들고 그 안에 파일을 저장할 수 있습니다.

데이터 정리 전략

4. 웹페이지 목록 생성 또는 데이터 스크래핑을 위한 정규식 작성

단일 웹 페이지에서 코드를 테스트할 수 있지만 이 프로젝트를 수행하기 위해 수십 또는 수백 페이지를 크롤링해야 합니다. 일반적으로 몇 개의 웹 페이지를 크롤링하려는 경우 링크를 배열에 저장하고 페이지를 스크랩할 때 해당 링크를 반복할 수 있습니다. 더 좋고 더 자주 사용되는 솔루션은 regex 를 사용하는 것 입니다. 간단히 말해서 유사한 URL 구조를 가진 웹사이트를 식별하는 프로그래밍 방식입니다.

예를 들어 Amazon에 있는 모든 랩톱의 제품 데이터를 크롤링하려고 할 수 있습니다. 이제 모든 URL이 " www.amazon.com/laptop/ <laptopModelNo>/prodData"로 시작하는 것을 볼 수 있습니다. 이러한 모든 URL이 추출되고 웹 스크래핑 기능이 이러한 URL에서만 실행되도록 정규식을 사용하여 이 형식을 복제할 수 있습니다 . 그리고 아마존 웹사이트의 모든 URL이 아닙니다. 크롤링할 웹페이지가 너무 많은 경우 병렬 처리 방식을 사용하여 언제든지 약 10개의 웹페이지를 크롤링하는 것이 좋습니다 . 웹 페이지를 스크랩하고 링크를 추출한 다음 해당 링크로 연결되는 웹 페이지를 스크랩하는 경우 루트 웹 페이지에서 발생하는 여러 하위 페이지를 동시에 크롤링하기 위해 트리와 같은 접근 방식을 사용할 수 있습니다.

정규식

5. 코드 작성 및 테스트

지금까지 논의한 것은 모두 준비 단계였습니다. 코드를 실행하고 작업을 완료하는 마지막 작업입니다. 웹 스크래핑 코드는 예상대로 정확하게 작동하지 않습니다. 크롤링하려는 모든 웹 페이지의 구조가 동일하지 않기 때문입니다. 예를 들어, 100개의 제품 페이지에서 스크래핑 코드를 실행했는데 그 중 80개만 스크랩된 것으로 나타났습니다. 그 이유는 20페이지가 품절 상태일 수 있고 웹페이지 구조가 다르기 때문입니다. 이러한 예외는 코드를 작성할 때 고려되지 않습니다. 그러나 몇 번의 반복 후에 필요한 변경을 수행할 수 있습니다. 그리고 필요한 모든 웹페이지에서 데이터를 추출합니다.

코드 테스트

대체 데이터 스크래핑 방법

Excel 필터 기능을 사용하여 데이터 스크랩

이것은 모든 웹 페이지에서 데이터를 스크랩하는 가장 쉬운 방법입니다. Excel을 제외한 추가 도구가 필요하지 않으며 대상 웹사이트나 시스템에 발자국을 남기지 않습니다. 즉, API 호출이 이루어지지 않고 쿠키가 설정되지 않습니다. Excel이 설치된 PC/Mac에 액세스할 수 있는 경우 이것이 가능합니다. 데이터를 스크랩하는 가장 쉬운 방법.

작동 방식

Excel에서 새 시트를 열고 첫 번째 셀에 대상 웹사이트의 URL을 작성합니다(예: http://www.joes-hardware-store.com/). 다음 셀에 대상 웹 페이지에서 데이터를 추출할 HTML 또는 XPath 데이터 필터 수식(이 예에서 사용된 XPath 데이터 필터 수식에 대해서는 아래 표 참조)을 입력합니다. 여러 열의 데이터를 긁어내려면 각 데이터 열에 대해 1단계를 반복하고 나란히 놓습니다.

Excel에서 XPath 데이터 필터를 얻는 방법

Excel에서 파일 > 옵션 > 고급을 클릭한 다음 표시 섹션으로 이동합니다. "리본에 개발 도구 탭 표시" 옆의 확인란을 선택한 다음 확인을 클릭합니다. 이것은 아래 스크린샷 1에 나와 있습니다.

Excel에서 개발자 > 참조를 클릭한 다음 아래로 스크롤하여 Microsoft XML Document 3.0을 찾습니다(아래 스크린샷 2 참조).

MSXML3 Apress를 클릭한 다음 확인을 클릭합니다(아래 스크린샷 3 참조).

이제 MSXML3 참조가 설치되었으므로 시도해 보겠습니다. Excel에서 대상 웹 페이지 URL을 셀 A1에 입력한 다음 XPath 데이터 필터 수식을 셀 B1에 입력합니다. 아래 스크린샷 4 및 5):

이제 Excel의 CTRL+C 바로 가기를 사용하여 B1 셀의 내용을 나머지 모든 셀에 복사합니다. 이것은 아래 스크린샷 6에 나와 있습니다.

대상 웹 페이지 URL(셀 A1)을 Excel의 주소 표시줄에 복사합니다. Enter 키를 눌러 브라우저에 로드하고 데이터가 Excel에 마술처럼 나타나는 것을 확인하세요.

보시다시피 이것은 데이터를 스크랩하는 매우 효율적인 방법입니다. 대상 웹사이트나 시스템에 발자국이 남지 않습니다. 즉, API 호출이 이루어지지 않고 쿠키가 설정되지 않습니다.

Microsoft Word의 Text-to-Columns 기능을 사용하여 데이터를 열별로 구분합니다.

이 방법은 첫 번째 방법보다 조금 더 복잡하지만 열이 명확하게 정의된 모든 웹사이트에서 데이터를 스크랩하는 데 사용할 수 있습니다. 아래에 설명된 몇 가지 추가 도구와 함께 MS Word 및 Excel이 필요합니다. 좋은 소식은 이 방법이 대상 웹사이트에 발자국을 남기므로 마케팅 목적으로 웹사이트를 스크랩하고 탐지를 피하려는 경우 이 방법은 적합하지 않다는 것입니다.

작동 방식

MS Word에서 Joe's Hardware Store Product Listing Scraping Tool과 같은 새 문서를 만든 다음 대상 웹 페이지를 텍스트 상자에 복사/붙여넣기합니다(아래 스크린샷 1 참조). CTRL + G를 눌러 MS Word에서 Goto 기능을 선택한 다음 정확히 <<!DOCTYPE HTML [ENTER]를 입력합니다. 이것은 아래 스크린샷 2에 나와 있습니다.

ALT + F5를 눌러 MS Word에서 실행 기능을 선택하면(스크린샷 3 참조) 다음과 유사하게 표시되어야 합니다(아래 스크린샷 4 참조).

Excel에서 아래 스크린샷 5와 같이 필터 > 텍스트를 열로 선택합니다.

Delimited를 선택한 다음 드롭다운 메뉴에서 구분된 구분 기호를 선택합니다(이 예에서는 기본적으로 선택되는 쉼표를 사용합니다).

이제 다음을 클릭하고 "쉼표"의 위치를 ​​정의합니다. 즉, 웹 데이터를 열로 구분합니다(예: ","를 구분 기호로 사용). 그런 다음 다음을 클릭하고 Excel에서 빈 셀을 처리하는 방법(예: 무시하거나 빈 값으로 대체)을 정의합니다(이 예에서는 "빈 값 무시"로 설정함). 그런 다음 마침을 클릭하여 Text-to-Columns 기능을 완료합니다.

대상 웹 페이지에 명확하게 정의된 열이 없는 경우 아래 스크린샷 6과 같이 "대체 값"으로 설정할 수 있습니다.

위의 스크린샷 7에서 볼 수 있듯이 내 데이터는 텍스트의 개별 열로 성공적으로 분리되었으며 이제 내 컴퓨터의 다른 위치에 쉽게 복사/붙여넣기할 수 있습니다.

이 방법은 일반적으로 명확하게 정의된 열 머리글이 있는 PDF 파일에서 데이터를 추출하는 데 특히 유용합니다. Excel 매크로를 사용하여 여러 PDF 파일에서 데이터를 자동으로 추출하는 것이 목표라면 많은 시간을 절약할 수 있습니다. 이제 동일한 MS Word 템플릿을 반복해서 사용하여 각 PDF 파일에 대해 여러 문서를 빠르게 만들 수 있기 때문입니다. 3. MS Excel VBA 편집기를 사용하여 다음을 사용하여 데이터를 스크랩합니다.

이 방법을 위해 여기에서 다운로드할 수 있는 xvba라는 도구를 사용할 것이며 API(응용 프로그램 인터페이스)처럼 작동합니다. 좋은 소식은 코드를 전혀 작성할 필요가 없다는 것입니다. 나쁜 소식은 대상 웹 페이지의 HTML을 입력해야 한다는 것입니다. 즉, MS Word를 사용하여 이 작업을 수행하는 것이 좋습니다. 웹 페이지를 구성 요소로 분할해야 하기 때문입니다(아래 스크린샷 1 참조).

대괄호 안의 숫자는 열과 행 머리글이 각 데이터 필드의 이름으로 사용된 스프레드시트의 개별 셀입니다. 변수처럼 작동합니다. 즉, Excel에서 텍스트로 처리되며 스프레드시트가 구조화된 방식에 따라 변경됩니다(예: 데이터를 필터링하기 위해 다른 열을 선택한 경우).

Google 시트에서 IMPORTXML 사용

IMPORTXML을 사용하여 웹페이지에서 데이터를 스크랩할 때 첫 번째 단계는 Google 스프레드시트를 여는 것입니다. 두 번째 단계는 도구 > 스크립트 편집기로 이동하는 것입니다. 세 번째 단계는 아래 스크린샷 7과 같이 대상 웹사이트의 HTML 코드를 텍스트 상자에 복사/붙여넣기하는 것입니다.

위의 스크린샷 8에서 볼 수 있듯이 내 데이터는 텍스트의 개별 열로 성공적으로 분리되었으며 이제 내 컴퓨터의 다른 위치에 쉽게 복사/붙여넣기할 수 있습니다. 우리는 과거에 이 방법을 사용하여 온라인 마케팅 캠페인을 위해 Facebook 및 Twitter 데이터를 스크랩했습니다. GOTO 명령을 사용하고 싶지 않을 때 AJAX를 사용하는 웹사이트에서 데이터를 스크랩하는 것도 좋은 방법입니다.

Google 스프레드시트에서 IMPORTHTML 사용

이 방법은 3번 방법과 유사하지만 IMPORTXML을 사용하는 대신 IMPORTHTML을 사용할 것입니다. 첫 번째 단계는 Google 스프레드시트를 여는 것입니다. 두 번째 단계는 도구 > 스크립트 편집기로 이동하는 것입니다. 세 번째 단계는 대상 웹사이트의 HTML 코드를 텍스트 상자에 복사/붙여넣기하는 것입니다.

크롬 확장 프로그램 사용

Data Scraper 및 CSV에 저장과 같은 크롬 확장 프로그램을 사용하여 웹 데이터를 스크랩할 수 있습니다. 크롬 확장 프로그램(Data Scraper)의 무료 및 유료 버전이 있으므로 둘 중 어느 것이 더 잘 작동하는지 확인하는 것이 좋습니다.

결론

최대 수백 페이지를 스크랩합니다(각 실행 사이에 몇 초의 간격을 두어야 함). 웹사이트를 한 달에 한 번 스크랩하는 것은 Python으로 작성된 DIY 솔루션으로 잘 작동합니다. 그러나 엔터프라이즈급 DaaS 솔루션을 찾고 있는 경우 PromptCloud이 요구 사항을 제공하면 연결하여 재생할 수 있는 데이터를 제공하는 종단 간 솔루션을 제공합니다.

인프라, 프록시 관리, 데이터를 스크랩하는 동안 차단되지 않도록 합니다. 데이터를 업데이트하기 위해 정기적으로 스크래핑 엔진을 실행합니다. 또한 관련 웹사이트의 UI 변경 사항을 수용하기 위해 변경합니다. 모든 것은 당사의 완전 관리형 솔루션 에서 처리됩니다. 종량제 클라우드 기반 서비스입니다. 이것은 모든 웹 스크래핑 요구 사항을 충족합니다. 스타트업, 다국적 기업 또는 연구 작업을 위한 데이터가 필요합니다. 우리는 모두를 위한 데이터 스크래핑 솔루션을 가지고 있습니다.