>백엔드 개발 >파이썬 튜토리얼 >Python 크롤러 시작 경험 공유

Python 크롤러 시작 경험 공유

小云云
小云云원래의
2017-12-05 09:53:134497검색

웹 크롤러는 웹 콘텐츠를 자동으로 가져오는 프로그램으로, 검색 엔진의 중요한 부분입니다. 웹 크롤러는 검색 엔진을 위해 World Wide Web에서 웹 페이지를 다운로드합니다. 일반적으로 전통적인 크롤러와 집중형 크롤러로 구분됩니다.

크롤러 학습은 기초가 전혀 없는 초보자로서 크게 3단계로 나눌 수 있습니다. 첫 번째 단계는 시작하고 필요한 기본 지식을 익히는 것입니다. 다른 사람의 크롤러 코드를 모두 이해한 후 세 번째 단계는 직접 수행하는 것입니다. 이 단계에서는 문제 해결을 위한 자신만의 아이디어를 갖기 시작하고 크롤러 시스템을 독립적으로 설계할 수 있습니다.

크롤링에 관련된 기술에는 프로그래밍 언어(여기서는 Python을 예로 들었습니다), HTML 지식, HTTP/HTTPS 프로토콜에 대한 기본 지식, 정규식, 데이터베이스 지식, 일반적인 사용 사용된 패킷 캡처 도구 및 크롤러 프레임워크의 사용 대규모 크롤러를 사용하고 포함하는 경우 배포, 메시지 대기열, 일반적으로 사용되는 데이터 구조 및 알고리즘, 캐싱, 심지어는 기계 학습 애플리케이션의 개념도 이해해야 합니다. 대규모 시스템은 다양한 기술로 지원됩니다. 크롤러는 데이터를 얻기 위한 것일 뿐이며 이러한 데이터의 분석 및 마이닝은 데이터 분석, 데이터 마이닝 및 기타 분야로 확장되어 기업의 의사 결정을 내릴 수 있습니다. 할.

그렇다면 크롤러 작성을 시작하기 전에 위의 모든 지식을 배워야 합니까? 물론 아닙니다. 학습은 Python 코드를 작성할 수 있는 한 직접 크롤링을 시작할 수 있는 것과 같습니다. 운전을 할 수 있는 한 길을 갈 수 있습니다. 운전하는 것보다 훨씬 안전해요.

Python으로 크롤러를 작성하려면 먼저 Python을 알아야 하고, 기본 구문을 이해해야 하며, 기본 소개인 list 및 dict와 같은 일반적인 데이터 구조에서 함수, 클래스 및 일반적인 메서드를 사용하는 방법을 알아야 합니다. 그렇다면 HTML을 이해해야 합니다. HTML은 문서 트리 구조입니다. 인터넷에는 HTML에 대한 30분짜리 입문 튜토리얼만 있으면 충분합니다. 다음으로 HTTP에 대한 지식이 있습니다. 크롤러의 기본 원리는 네트워크 요청을 통해 원격 서버에서 데이터를 다운로드하는 프로세스이며, 이 네트워크 요청 뒤에 있는 기술은 HTTP 프로토콜을 기반으로 합니다. 초급 크롤러로서 HTTP 프로토콜의 기본 원리를 이해해야 합니다. 비록 HTTP 사양을 한 권의 책으로 작성할 수는 없지만, 이론과 실습을 결합하여 심층적인 내용을 나중에 읽을 수 있습니다.

네트워크 요청 프레임워크는 모두 HTTP 프로토콜의 구현입니다. 예를 들어 유명한 네트워크 요청 라이브러리 Requests는 HTTP 요청을 보내는 브라우저를 시뮬레이션하는 네트워크 라이브러리입니다. HTTP 프로토콜을 이해한 후에는 네트워크 관련 모듈을 구체적으로 배울 수 있습니다. 예를 들어 Python에는 urllib, urllib2(Python3의 urllib), httplib, Cookie 등이 포함되어 있습니다. 물론 사용 방법을 직접 배우려면 건너뛸 수 있습니다. 직접 요청하려면 HTTP 프로토콜의 기본 내용을 잘 알고 있어야 합니다. 여기서 꼭 추천하고 싶은 책은 "HTTP Illustrated"입니다. 크롤링되는 데이터는 대부분 HTML 텍스트이고 일부는 XML 형식이나 Json 형식을 기반으로 한 데이터입니다. 이러한 데이터를 올바르게 처리하려면 각 데이터 유형에 대한 솔루션을 숙지해야 합니다. 예를 들어 JSON 데이터를 직접 사용할 수 있습니다. Python에서 HTML 데이터의 모듈 json의 경우 BeautifulSoup, lxml 및 기타 라이브러리를 사용하여 처리할 수 있습니다. xml 데이터의 경우 untangle 및 xmltodict와 같은 타사 라이브러리를 사용할 수 있습니다.

초급 크롤러의 경우 정규식을 배울 필요가 없습니다. 예를 들어 데이터를 다시 크롤링한 후 사용할 수 있다고 판단되면 정규식을 배울 수 있습니다. 정규 문자열 작업 메서드가 전혀 처리할 수 없는 경우 정규식을 이해하려고 노력할 수 있습니다. 정규식은 절반의 노력으로 두 배의 결과를 얻을 수 있는 경우가 많습니다. Python의 re 모듈을 사용하여 정규식을 처리할 수 있습니다. 다음은 권장되는 몇 가지 튜토리얼입니다. 정규식에 대한 30분 입문 튜토리얼 Python 정규식 가이드 정규식에 대한 전체 가이드

데이터 정리 후 영구 저장이 필요합니다. CSV 파일과 같은 파일 저장소를 사용하거나 데이터베이스를 저장하려면 sqlite를 사용하고, 보다 전문적으로는 MySQL 또는 분산 문서 데이터베이스 MongoDB를 사용하세요. 이러한 데이터베이스는 Python에 매우 친숙하며 이미 만들어진 라이브러리를 지원합니다. Python은 MySQL 데이터베이스를 운영하고 Python을 통해 데이터베이스에 연결합니다

데이터 캡처부터 정리, 저장까지의 기본 프로세스가 완료되었습니다. 다음은 내부 기술을 테스트하는 시간입니다. - 크롤러 전략. 예를 들어, 요청 작업을 제한하고, 요청 속도를 제한하고, IP를 제한하고, 심지어 암호화하는 등 이상한 수단을 사용하는 것을 방지하기 위해 최선을 다합니다. 즉, 데이터를 얻는 데 드는 비용을 늘리는 것입니다. 이때 더 많은 지식을 습득해야 합니다. HTTP 프로토콜을 깊이 이해해야 하고, 일반적인 암호화 및 암호 해독 알고리즘을 이해해야 하며, HTTP의 쿠키, HTTP 프록시 및 HTTP의 다양한 HEADER를 이해해야 합니다. 파충류와 반파충류는 서로 사랑하고 서로 죽이는 쌍이다. 도가 높을 때마다 마력이 높다. 안티 크롤러를 처리하는 방법에 대한 확립된 통합 솔루션은 없습니다. 이는 귀하의 경험과 습득한 지식 시스템에 따라 다릅니다. 이는 단지 21일간의 입문 튜토리얼만으로는 달성할 수 있는 것이 아닙니다.

데이터 구조 및 알고리즘

대규모 크롤링을 수행하려면 일반적으로 URL에서 크롤링을 시작한 다음 페이지에서 구문 분석된 URL 링크를 크롤링할 URL 집합에 추가해야 합니다. 일부 웹사이트를 먼저 크롤링하고 나중에 일부 웹사이트를 크롤링합니다. 페이지가 크롤링될 때마다 다음 링크를 크롤링하기 위해 깊이 우선 또는 너비 우선 알고리즘을 사용할지 여부. 네트워크 요청이 시작될 때마다 DNS 확인 프로세스가 포함됩니다(URL을 IP로 변환). DNS 확인이 반복되는 것을 방지하려면 확인된 IP를 캐시해야 합니다. URL이 너무 많습니다. 어떤 URL이 크롤링되었는지, 어떤 URL이 크롤링되지 않았는지 확인하는 방법은 무엇입니까? 간단히 말하면 사전 구조를 사용하여 크롤링된 URL을 많이 발견하는 경우입니다. , 사전이 차지하는 메모리 공간이 매우 클 것입니다. 이때 스레드로 데이터를 하나씩 크롤링하려면 Bloom Filter를 사용하는 것이 좋습니다. 크롤러 효율성을 높이려면 효율성이 낮습니다. 다중 스레드, 다중 프로세스, 코루틴 또는 분산 작업을 사용해야 합니다.

연습 정보

인터넷에는 크롤러 튜토리얼이 많이 있습니다. 원칙은 기본적으로 동일합니다. 크롤링을 위해 다른 웹사이트를 변경하면 됩니다. 온라인 튜토리얼을 따라 웹사이트 로그인을 시뮬레이션하고 확인하는 방법을 배울 수 있습니다. in 등을 검색하고 Douban 영화, 책 등을 크롤링합니다. 문제를 만나는 것부터 해결하는 것까지 지속적인 연습을 통해 얻는 이런 이득은 책을 읽는 것과 비교할 수 없습니다.

크롤러에 일반적으로 사용되는 라이브러리

  • urllib, urlib2(Python의 urllib) Python의 내장 네트워크 요청 라이브러리

  • urllib3: 스레드로부터 안전한 HTTP 네트워크 요청 라이브러리

  • requests: 가장 널리 사용되는 네트워크 py2 및 py3과 호환되는 요청 라이브러리

  • grequests: 비동기 요청

  • BeautifulSoup: HTML, XML 작업 구문 분석 라이브러리

  • lxml: HTML, XML을 처리하는 또 다른 방법

  • tornado: 비동기 네트워크

  • Gevent: 비동기 네트워크 프레임워크

  • Scrapy: 가장 인기 있는 크롤러 프레임워크

  • pyspider: 크롤러 프레임워크

  • xmltodict: xml이 사전으로 변환됨

  • pyquery: jQuery처럼 HTML을 조작하세요

  • Jieba: 단어 분할

  • SQLAlchemy: ORM 프레임워크

  • celery: 메시지 대기열

  • rq: 단순 메시지 대기열

  • python-goose: HTML에서 텍스트 추출

추천 도서:

  • "HTTP 그림"

  • "HTTP에 대한 확실한 가이드"

  • "컴퓨터 네트워크: 하향식 접근 방식"

  • "Python으로 웹 크롤러 작성"

  • "파이썬 네트워크 데이터 수집》

  • 《정규식 익히기》

  • 《파이썬 시작하기 연습》

  • 《자신만의 웹 크롤러 작성》

  • 《Crypto101》

  • I 그림으로 설명된 암호화 기술 》

위 내용은 Python 크롤러 기술을 시작하는 경험을 공유하는 내용입니다. 모든 사람에게 도움이 되기를 바랍니다.

관련 추천:

Python3 기본 크롤러 소개

Python의 가장 간단한 웹 크롤러 튜토리얼

Python 크롤러 연습

위 내용은 Python 크롤러 시작 경험 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.