본문 바로가기
Coding

Python으로 웹 스크래핑 지역 타겟팅에서 프록시를 사용하는 방법

by Jakegyllenhaal 2022. 5. 7.
반응형

Python으로 웹 스크래핑 지역 타겟팅에서 프록시를 사용하는 방법

 

프록시를 사용하여 애플리케이션에 대한 정확한 데이터 얻기

Pixabay로부터 입수된 kamille님의 이미지 입니다.

프록시는 귀하와 대상 웹사이트 사이에 있는 것입니다. 프록시로 웹 사이트를 스크랩할 때 대상 웹 사이트를 스크랩하는 데 사용되는 것은 귀하의 것이 아니라 프록시의 IP입니다.

애플리케이션이 웹 스크래핑에 크게 의존하는 경우 다양한 이유로 프록시를 사용하고 싶을 것입니다. 그 중 하나는 지역 타겟팅입니다. 즉, 지역 IP가 아닌 특정 지역이나 국가에서 대상 사이트를 스크랩하려고 합니다. 이는 일반적으로 지역마다 다른 콘텐츠를 표시하는 온라인 소매업체에 특히 중요합니다.

이 기사에서는 Python에서 웹 스크래핑에 프록시를 사용하는 다양한 방법을 소개합니다. requests 그리고 Scrapy 도서관. 테스트용 무료 프록시와 프로덕션 전용 프록시가 모두 도입됩니다.

무료 프록시는 테스트에 적합하며 일반적으로 테스트에만 사용해야 합니다. 무료 프록시는 일반적으로 많은 사용자가 공유하기 때문입니다. 따라서 성능이 전용보다 훨씬 낮고 쉽게 금지 될 수 있습니다. 또한 잘못된 프록시를 사용하면 보안 문제가 발생할 수 있습니다.

반면에 전용 프록시는 모두 상업적이며 계획에 따라 상당히 비쌀 수 있습니다. 그러나 훨씬 더 안전하고 안정적이며 일반적으로 프로덕션에 사용해야 합니다. 그럼에도 불구하고 걱정하지 마십시오. 이 게시물에 소개된 모든 제품에는 무료 평가판 요금제가 있으며 학습 목적으로 비용을 지불할 필요가 없습니다.

먼저 웹 스크래핑을 위한 패키지를 설치해야 합니다. 우리는 설치할 것입니다 requests 그리고 Scapy 이 기사의 라이브러리. 시스템 라이브러리를 엉망으로 만들지 않도록 가상 환경을 만들고 거기에 패키지를 설치하는 것이 좋습니다.

간단하게 하기 위해 다음을 사용할 것입니다. conda 가상 환경을 생성합니다. 또한 Python 코드를 대화형으로 보다 편리하게 실행할 수 있도록 iPython을 설치합니다.

이제 Python으로 테스트 코드를 작성할 수 있습니다. 요청 라이브러리로 테스트하기 위해 iPython에서 직접 코드를 실행할 수 있습니다. 그러나 Scrapy 웹 스크래핑 프레임워크의 경우 VS Code와 같은 일부 IDE에서 코드를 작성하는 것이 좋습니다.

먼저 프록시를 사용하지 않고 기본적인 스크래핑을 해보자. https://httpbin.org/ip를 스크랩하고 IP를 얻습니다. iPython에서 다음 코드를 실행하거나 스크립트로 직접 실행하십시오.

스크래핑에 Scrapy 프레임워크를 사용하려면 먼저 스크래핑 프로젝트와 스파이더를 만들어야 합니다.

Scrapy 프레임워크를 사용하면 코드도 매우 간단합니다. 스파이더 파일에 다음 코드 추가 proxy_tutorial/spiders/ipinfo.py. 참고로 start_urls IP 주소를 얻으려면 지정된 대로 업데이트해야 합니다.

이제 스파이더를 실행하여 IP 주소를 가져옵니다.

참고로 -L 옵션은 스크래핑 프로세스의 로깅을 음소거하는 데 사용됩니다. 요청 모듈과 동일한 결과를 얻습니다. 이제 프록시를 사용하여 어떤 마법 같은 일이 일어나는지 봅시다.

공유/무료 프록시

온라인에서 무료로 사용할 수 있는 공유 프록시 서비스가 있습니다. 권장되는 것은 유명한 프록시 공급자이므로 사용하기에 안전한 Webshare입니다. 다른 국가의 10개 프록시를 포함하는 무료 계획이 있으며 테스트 목적으로 적합합니다. 또한 더 나은 프록시 서비스를 원하면 유료 개인 또는 전용 요금제로 요금제를 업그레이드할 수 있습니다.

Webshare에 로그인하면 다음과 같은 무료 프록시가 표시됩니다.

요청 라이브러리에 공유 프록시 사용

이제 웹 스크래핑에서 공유 프록시를 사용해 보겠습니다. 교체 사용자 이름, 비밀번호, 프록시 주소, 그리고 포트 위의 그림과 같이 자신의 IP를 사용하면 위와 같이 자신의 IP가 아닌 프록시의 IP가 표시됩니다.

프록시에는 HTTP 및 HTTPS 요청에 대해 각각 하나씩 있어야 합니다. 그러나 값은 동일하며 둘 다 다음으로 시작합니다. http. 인증 정보가 있는 프록시의 URL입니다. 이 구문은 요청 라이브러리에 필요하지만 곧 보게 될 Scrapy 프레임워크에는 필요하지 않습니다.

https://ipinfo.io 또는 온라인에서 사용 가능한 기타 유사한 IP 서비스에서 프록시 IP의 지리적 위치를 확인할 수 있습니다.

Scrapy 프레임워크에 공유 프록시 사용

Scrapy 프레임워크를 사용하여 두 가지 방법으로 프록시를 추가할 수 있습니다. 먼저 다음과 같이 추가할 수 있습니다. meta 요청 매개변수:

또는 사용자 지정 미들웨어에 프록시를 추가할 수 있습니다. 간단한 Scrapy 프로젝트 폴더에는 다음과 같은 파일이 있습니다. middlewares.py 많은 상용구 코드가 있습니다. 모두 제거하고 다음 코드를 추가합니다.

실제로 미들웨어에 지정된 프록시를 작동시키려면 주석 처리하거나 제거하십시오. start_requests 위에 추가된 기능. 그런 다음 다음 코드를 추가하십시오. settings.py. 단순화를 위해 다음에서 상용구 코드를 제거할 수도 있습니다. settings.py 여기에 표시된 것을 유지하십시오.

프록시 미들웨어의 순서가 중요하므로 사용자 정의 미들웨어는 기본 제공 HttpProxyMiddleware그렇지 않으면 제대로 작동하지 않습니다.

스파이더를 다시 실행하면 프록시의 IP도 표시됩니다.

위에 표시된 무료 또는 공유 프록시를 사용하면 항상 프록시의 동일한 IP에서 웹사이트를 스크랩하므로 쉽게 차단될 수 있습니다. 이 문제를 해결하려면 많은 수의 프록시가 있어야 하며 정기적으로 업데이트/회전해야 합니다.

이것은 매우 까다롭고 시간이 많이 걸리는 작업입니다. 처음에는 재미있을 수 있지만 매일 해야 하는 경우 전혀 재미가 없습니다. 따라서 프로덕션 사용의 경우 일반적으로 잘 지원되는 상용 솔루션을 찾아야 하므로 프록시 업데이트 및 순환에 대해 걱정할 필요가 없습니다.

이제 몇 가지 전용 프록시 서비스를 확인해 보겠습니다. 전용 프록시를 제공하고 IP 순환을 자동으로 스마트하게 관리하는 프록시 공급자가 꽤 있습니다. 몇 가지 예를 들면 Zyte, ScraperAPI, ProxyCrawl 등이 있습니다. 이 세 공급자는 모두 무료 평가판 계획을 가지고 있으며 학습 목적으로 며칠 동안 놀 수 있습니다. 전체 목록을 보려면 이 기사 또는 기타 유사한 기사를 온라인에서 확인할 수 있습니다. 프록시 공급자의 순위는 매우 주관적이므로 신중하게 확인하고 비교하고 필요와 예산에 가장 적합한 것을 선택해야 합니다.

이 포스트에서는 Zyte와 ScraperAPI가 상대적으로 저렴하고 매우 좋은 문서를 가지고 있기 때문에 소개할 것입니다.

Zyte는 위에서 소개한 인기 있는 스크래핑 프레임워크인 Scrapy의 동일한 개발자 그룹에 의해 개발되었습니다. 따라서 Zyte와 Scrapy의 통합은 기본적이고 매우 간단합니다. 프로젝트에서 Scrapy를 사용하는 경우 Zyte는 고려할 첫 번째 프록시 공급자가 될 수 있습니다.

실제로 Zyte는 독립 프록시 서비스이며 Scrapy와 독립적으로 작동할 수 있습니다. 따라서 요청 라이브러리와 함께 Zyte를 사용할 수도 있습니다. 사용법은 위의 공유 프록시와 매우 유사합니다.

Zyte Smart Proxy Manager를 사용하려면 Zyte에서 계정을 만들고 신용 카드를 추가하여 14일 평가판을 받아야 합니다. 평가판 기간이 종료되거나 할당량을 초과할 때까지 요금이 청구되지 않습니다. 따라서 사용량을 주시하고 테스트를 마친 후에는 구독을 취소하는 것을 잊지 마십시오.

등록을 마치면 "구성 설정"을 지정할 수 있는 "스마트 프록시 관리자 시작하기" 페이지로 이동합니다. 이 페이지를 나중에 열려면 왼쪽 탐색 모음의 "Smart Proxy Manager" 아래에 있는 "API Access" 탭을 클릭하면 됩니다.

지역 타겟팅 스크래핑의 경우 각 지역에 대한 계정을 생성해야 합니다. 여기에서 시연을 위해 두 개의 계정이 생성됩니다. 하나는 미국용이고 다른 하나는 영국용입니다. API 키는 각 계정에 대해 자동으로 생성됩니다. 이제 요청 및 Scrapy 프레임워크에서 각각 API 키를 사용하겠습니다.

요청 라이브러리에 Zyte 프록시 사용

요청 라이브러리의 경우 HTTPS 웹 페이지를 스크랩하기 위한 인증서를 다운로드해야 합니다. 이름이 지정된 인증서 다운로드 zyte-proxy-ca.crt 컴퓨터에 저장합니다.

프록시의 IP를 확인하기 위해 https://httpbin.org/ip를 다시 스크랩합니다.

지정해야 한다는 점에 유의해야 합니다. verify 요청 라이브러리로 HTTPS 요청을 할 때 매개변수. 값은 인증서 파일의 경로입니다. zyte-proxy-ca.crt 방금 다운로드했습니다.

Scrapy 프레임워크에 Zyte 프록시 사용

Scrapy와 Zyte는 모두 같은 회사에서 개발했기 때문에 Scrapy 프레임워크 내에서 Zyte를 사용하는 것은 매우 간단합니다. 그러나 먼저 가상 환경에 Zyte Smart Proxy Manager 미들웨어를 설치해야 합니다.

$ pip install scrapy-zyte-smartproxy

그런 다음 Zyte Smart Proxy Manager 미들웨어를 추가해야 합니다. DOWNLOADER_MIDDLEWARES 당신의 settings.py 파일:

위에서 추가한 사용자 지정 프록시 미들웨어를 제거해야 합니다. 주문 값 610은 Zyte의 공식 문서에서 제공합니다.

그런 다음 다음에서 Zyte 스마트 프록시를 활성화할 수 있습니다. setttings.py 전역적으로 또는 특정 스파이더에 대해 활성화합니다.

자이트 활성화 settings.py:

특정 스파이더에 대해 Zyte 활성화:

두 가지 방법 모두 작동하며 필요에 맞는 방법을 선택할 수 있습니다. 이제 스파이더를 실행하면 프록시의 IP도 볼 수 있습니다.

스파이더를 여러 번 실행하면 매번 다른 IP를 얻게 되며 이는 Zyte에 의해 스마트하게 회전됩니다.

스크레이퍼 API

두 번째로 소개하고자 하는 전용 프록시 공급자는 ScraperAPI입니다. 취미용으로 비교적 저렴하고 문서가 매우 훌륭하기 때문에 Zyte의 잠재적인 대안이 될 수 있습니다. 게다가 하나의 인수로 자바스크립트 웹페이지를 스크랩하는 것도 편리하다. 단점은 지역 타겟팅 기능이 저렴하지 않다는 것입니다. 그럼에도 불구하고 스크래핑 프로젝트에 지역 타겟팅 요구 사항이 없다면 실현 가능한 선택이 될 수 있습니다. 이 기사에서 소개한 무료 및 전용 프록시를 사용하는 방법을 배웠다면 모든 프록시 공급자를 매우 쉽게 시작할 수 있습니다.

ScraperAPI를 테스트하려면 ScraperAPI 홈 페이지에서 "무료 평가판"을 클릭할 수 있습니다. 여기에서 5,000개의 무료 API 크레딧으로 시작할 수 있습니다. Zyte와 달리 무료 평가판에는 신용 카드가 필요하지 않습니다.

등록하고 로그인하면 API 키와 몇 가지 샘플 코드를 볼 수 있는 ScraperAPI 대시보드로 이동합니다.

요청 라이브러리에 대해 ScraperAPI 프록시 사용

ScraperAPI를 사용하는 방법에는 여러 가지가 있습니다. 프록시 모드는 일반적이고 다른 프록시 공급자와 유사하기 때문에 프록시 모드를 사용합니다. ScraperAPI와 함께 요청 라이브러리를 사용하는 코드는 위에 표시된 Zyte Smart Proxy의 코드와 매우 유사하며 일부 공급자별 설정이 있습니다.

기조연설:

  • 지역 타겟팅 기능을 활성화하려면 다음을 지정해야 합니다. country_code 프록시에서. 다른 사용자 정의 매개변수를 확인하려면 공식 문서를 확인하십시오.
  • 우리는 지정해야합니다 verify=False ScraperAPI가 사용될 때 요청 라이브러리에 대한. 스크랩하는 사이트에 따라 문제가 될 수도 있고 아닐 수도 있습니다.

Scrapy 프레임워크에 ScraperAPI 프록시 사용

Scrapy와 함께 ScraperAPI를 사용하려면 Zyte Smart Proxy와 같은 방식으로 활성화할 수 없지만 Webshare의 무료 프록시와 같은 방식으로 활성화해야 합니다. 이는 Zyte가 Scrapy의 기본이고 다른 프록시 공급자는 모두 Scrapy의 타사이기 때문입니다.

우리는 프록시를 추가할 수 있습니다 start_requests 방법 또는 위에 표시된 사용자 지정 프록시 미들웨어를 통해. 단순화를 위해 프록시를 추가합니다. start_requests 여기에서 방법:

Webshare 무료 프록시와 유사하게 Scrapy에 대해 하나의 HTTP 프록시만 추가하면 됩니다. 지금 이 스파이더를 실행하면 프록시의 IP를 얻을 수 있습니다.

프록시가 예상대로 작동하는지 확인하기 위해 국가 코드를 프랑스로 지정했습니다.

이 기사에서는 웹 스크래핑에서 프록시를 사용하는 다양한 방법을 소개했습니다. 학습 및 테스트 목적으로 무료 프록시를 사용할 수 있습니다. 그러나 프로덕션 용도로 이동하는 경우 스마트 IP 순환을 제공하고 유지 관리 시간을 많이 절약할 수 있는 전용 IP 사용을 고려해야 합니다.

시장에는 수많은 프록시 공급자가 있습니다. 이들 간의 주요 차이점은 지리적 위치 범위, IP 풀의 크기 및 속도이며 함께 가격을 결정합니다. 직접 확인하고 신중하게 비교하고 필요와 예산에 가장 적합한 것을 선택해야 합니다.

웹 스크래핑에 Scrapy 프레임워크를 사용하는 경우 Zyte Smart Proxy는 사용하기 쉽고 비교적 경제적인 계획을 가지고 있기 때문에 좋은 선택이 될 수 있습니다. 그런데 몇 가지 테스트만 하려는 경우 Zyte Smart Proxy 구독을 취소하는 것을 잊지 마십시오. 그렇지 않으면 평가판 기간 후에 요금이 청구됩니다.

반응형

댓글