Python3 크롤러 Scrapy 프레임 워크에서 일반적으로 사용되는 명령

목차

 

전역 명령

가져 오기 명령

runspider 명령

설정 명령

쉘 명령

startproject 명령

버전 명령

 보기 명령

프로젝트 명령

벤치 명령

Genspider 명령

확인 명령

크롤링 명령

목록 명령

 편집 명령

 구문 분석 명령


전역 명령

  •   벤치         실행 빠른 벤치 마크 테스트
  •  가져         오기 Scrapy 다운로더를 사용하여 URL 가져 오기
  •   genspider     미리 정의 된 템플릿을 사용하여 새 스파이더 생성
  •   runspider     (프로젝트를 생성하지 않고) 독립적 인 스파이더 실행
  •   설정      설정 값 가져 오기
  •   쉘         대화 형 스크래핑 콘솔
  •   startproject  새 프로젝트 만들기
  •   버전       Print Scrapy 버전
  •          Scrapy에서 본 것처럼 브라우저에서 URL 열기 보기  

가져 오기 명령

fetch 명령은 주로 크롤러의 크롤링 프로세스를 표시하는 데 사용됩니다.
예를 들어 해당 URL을 스크래피 가져 오기 URL 형식으로 크롤링하는 과정을 표시 할 수 있습니다. 아래 그림과 같이 크롤러를 표시하여 Baidu 홈페이지 (http://www.baidu.com)를 크롤링하는 과정을 예로 들어 보겠습니다.

이 시점에서 Scrapy 프로젝트 디렉토리 외부에서이 명령을 사용하면 Scrapy의 기본 크롤러가 호출되어 웹 페이지를 크롤링합니다. Scrapy의 프로젝트 디렉토리에서이 명령을 사용하면 프로젝트의 크롤러가 호출되어 웹 페이지를 크롤링합니다.
fetch 명령을 사용할 때 해당 제어를 위해 특정 매개 변수를 사용할 수도 있습니다.
scrapy fetch -h를 사용하여 사용 가능한 모든 가져 오기 관련 매개 변수를 나열 할 수 있습니다.
예를 들어 -headers 매개 변수를 사용하여 해당 크롤러가 웹 페이지를 크롤링 할 때 헤더 정보 표시를 제어하거나 -nolog 매개 변수를 사용하여 로그 정보를 표시하지 않도록 제어 할 수 있습니다. 동시에 --spider-SPIDER 매개 변수를 사용하여 크롤러는 -logfile = FILE 매개 변수를 사용하여 로그 정보를 저장할 파일을 지정하고 -loglevel-LEVEL
매개 변수를 사용하여 로그 레벨을 제어합니다.
아래와 같이 크롤러가 Sina 뉴스 홈페이지 (ttp : //news.sina.com.cn/)를 크롤링하고 로그 정보를 표시하지 않을 때 헤더 정보를 제어하기 위해 --headers 매개 변수와 --nolog 매개 변수를 사용합니다.

runspider 명령

Scrapy의 runspider 명령을 통해 Scrapy에 의존하지 않는 크롤러 프로젝트를 실현하고 크롤러 파일을 직접 실행할 수 있습니다.
아래에서는 ruspioler 명령을 사용하여 크롤링 파일을 실행하는 예를 보여줍니다. 먼저 아래와 같이 Scrapy 크롤러 파일을 작성합니다.

from scrapy.spiders import Spider

class FirstSpider(Spider):
    name = 'first'
    allowed_domains = ['baidu.com']
    start_urls = ['https://www.baidu.com',]

    def parse(self, response):
        pass

여기서는 크롤러 파일을 간단히 이해하면됩니다. 나중에 크롤러 파일을 작성하는 방법에 대해 자세히 알아볼 것입니다. 먼저 크롤러 파일의 이름을 먼저 정의하고 동시에 크롤링의 시작 URL을 htp : //www.baidu.com으로 정의합니다.
그런 다음 runspider 명령을 사용하여 크롤러 파일을 직접 실행할 수 있습니다. 현재 실행하기 위해 전체 Scrapy 프로젝트에 의존 할 필요가 없으며 해당 크롤러 파일 만 있으면됩니다.
아래와 같이 scrapy runspider를 통해 크롤러 파일을 실행하고 로그 수준을 INFO로 설정했습니다.

이 지침을 통해 Scrapy 프로젝트에 의존하지 않고 크롤러 파일이 마침내 성공적으로 완료되었음을 알 수 있습니다.

설정 명령

Scrapy의 설정 명령을 통해 Scrapy에 해당하는 구성 정보를 볼 수 있습니다.
Scrapy 프로젝트 디렉토리에서 sttings 명령어를 사용하면 해당 프로젝트의 구성 정보를 볼 수 있으며, Scrapy 프로젝트 디렉토리 외부에서 설정 명령어를 사용하면 Scrapy 기본 구성 정보를 볼 수 있습니다.

쉘 명령

Scrapy의 대화 형 터미널 (Scrapy 셸)은 셸 명령을 통해 시작할 수 있습니다.
Scrapy의 대화 형 터미널은 개발 및 디버깅 중에 자주 사용됩니다. Scrapy의 대화 형 터미널을 사용하면 Scrapy 크롤러를 시작하지 않고도 웹 사이트 응답을 디버그 할 수 있습니다. 마찬가지로이 대화 형 터미널에서 Python을 작성할 수도 있습니다. 코드는 그에 따라 테스트됩니다.
예를 들어 셸 명령을 사용하여 Baidu 홈페이지를 크롤링하기위한 대화 형 터미널 환경을 만들고 아래와 같이 로그 정보를 출력하지 않도록 설정할 수 있습니다.
 

 이 명령을 실행하면 Scrapy 개체와 아이템, 응답, 설정, 스파이더 등의 바로 가기 명령을 사용할 수 있으며 대화 형 모드로 들어갑니다. ">>>"후에 대화 형 명령을 입력하고 해당 코드입니다.
이 대화 형 모드에서는 크롤링 된 웹 페이지의 제목을 추출 할 수 있습니다. 현재는 XPath 표현식을 통해 추출합니다. 현재 독자는 XPath 표현식에 익숙하지 않을 수 있습니다. XPath 표현식의 기본 사항은 나중에 설명하겠습니다. 여기서는 다음과 같은 XPath 표현식 "/ html / head / title"의 의미 만 알면됩니다. 웹 페이지의 <html)> 태그 아래에있는 <head> 태그에서 <title> 태그에 해당하는 정보를 추출합니다. 이때 태그의 정보가 웹 페이지의 제목 정보임을 알고 있으므로 다음 XPath 표현식 "/ htm / headtitle"은 크롤링 된 웹 페이지의 제목 정보를 추출하는 데 사용됩니다.
아래와 같이 sel.xpath를 통해 해당 정보를 추출하고 언급 한 정보를 Python 코드로 출력합니다.

>>> ti = sel. xpath ( "/ html / head / title")
>>> print (ti)
[<selector xpath = '/ html / head / title'data = '<title> Baidu, 당신은 알게 될 것입니다 </ tit1e> '>]
>>>
데이터 뒤의 내용이 추출 된 데이터임을 알 수 있으며 제목 "<title> Baidu on Baidu, you will know </ title>"이 성공적으로 추출되었습니다.
또한 대화 형 터미널에서 다양한 개발 및 디버깅을 수행 할 수도 있습니다.
대화 형 터미널을 종료하려면 다음과 같이 exit ()를 사용하여 수행 할 수 있습니다.
>>> exit ()
D : \ Python35 \ myweb \ part12>
위에서 Scrapy에서 셸 명령을 사용하는 방법을 분석하고 셸 명령을 사용하는 방법을 배웁니다. , 셸 명령을 통해 Scrapy 프로젝트를 생성하지 않고도 크롤러를 직접 개발하고 디버깅 할 수 있기 때문에 크롤러의 개발 및 디버깅을 어느 정도 용이하게 할 수 있습니다.

startproject 명령

startproject 명령 이전 섹션은 자세히 분석되었으며 주로 프로젝트를 만드는 데 사용됩니다.

버전 명령

버전 명령을 통해 Scrapy 버전 관련 정보를 직접 표시 할 수 있습니다.
예를 들어 Scrapy의 버전 정보를 보려면 다음 코드를 사용할 수 있습니다.

titelptotopltforo의 버전 정보와 같은 Scrapy와 관련된 다른 버전 정보 (물론 위에서 언급 한 Scrapy 버전 정보 포함)를 보려면 아래와 같이 version 명령에 -v 매개 변수를 추가 할 수 있습니다.

보시다시피 Scrapy와 관련된 버전 정보가 현재 자세히 표시되었습니다.

 보기 명령

보기 명령을 통해 웹 페이지를 다운로드하고 브라우저로 보는 기능을 얻을 수 있습니다.
예를 들어 다음 명령을 통해 NetEase 뉴스 홈페이지 (http://www.baidu.com/)를 다운로드하면 다운로드 한 웹 페이지를 브라우저에서 자동으로 볼 수 있습니다.
(venv) D : \ pycharmproject \ pythonlearning> scrapy view http://www.baidu.com/
이 명령을 실행하면 자동으로 브라우저가 열리고 로컬에 다운로드 된 페이지가 표시됩니다 (웹 페이지가 로컬 , 따라서 현재 URL은 그림 12-5와 같이 로컬 웹 페이지 주소입니다.

프로젝트 명령

다음으로 Scrapy 프로젝트 명령의 사용을 자세히 분석합니다.
Scrapy 프로젝트 명령은 Scrapy 크롤러 프로젝트를 기반으로 만 사용할 수 있으므로 먼저 아래와 같이 이미 생성 된 Scrapy 크롤러 프로젝트를 입력합니다.
 

(venv) D:\pycharmproject\pythonlearning>cd myfirstpjt

 프로젝트에서 사용 가능한 명령을 보려면 scrapy -h를 사용하십시오.

사용 가능한 명령 :
  벤치         빠른 벤치 마크 테스트
  검사       실행         스파이더 계약
  크롤링   확인 스파이더
 편집 실행          스파이더
  가져       오기 편집 Scrapy 다운로더를 사용하여 URL 가져   오기
  genspider     사전 정의 된 템플릿
  목록을 사용하여 새 스파이더 생성 사용        가능한 스파이더 나열           URL
  구문 분석 (스파이더 사용) 및 인쇄 결과
  가     실행됩니다. 자체 포함 된 스파이더 실행 (프로젝트를 생성하지 않음)
  설정      설정 값 가져 오기
  shell         대화 형 스크래핑 콘솔
  startproject 새 프로젝트
  버전 생성       Scrapy 버전
  보기 인쇄 Scrapy          에서 보이는 것처럼 브라우저에서 URL 열기

벤치 명령

벤치 명령을 사용하여 로컬 하드웨어의 성능을 테스트합니다.
스크래피 벤치를 실행하면 로컬 서버가 생성되어 최대 속도로 크롤링됩니다. 로컬 하드웨어의 성능을 테스트하고 다른 많은 요인의 영향을 피하기 위해 콘텐츠 처리없이 링크 후속 조치 만 수행합니다.
아래에 표시된 것처럼 스크래피 벤치를 사용하여 로컬 하드웨어의 성능을 테스트했습니다.
 

얻은 테스트 결과에서 하드웨어 성능만으로 분당 약 수천 개의 웹 페이지를 크롤링 할 수 있음을 확인할 수 있습니다. 이것은 단지 참조 기준일뿐입니다. 크롤러 프로젝트가 실제로 실행될 때 다양한 요인으로 인해 속도가 달라집니다. 일반적으로 실제 실행 속도와 참조 속도를 비교하여 크롤러 프로젝트를 최적화하고 개선 할 수 있습니다.

Genspider 명령

genspider 명령을 사용하여 Scrapy 크롤러 파일을 생성 할 수 있으며, 이는 크롤러 파일을 생성하는 빠른 방법입니다. 이 명령을 사용하면 기존 크롤러 템플릿을 기반으로 새 크롤러 파일을 직접 생성 할 수 있으므로 매우 편리합니다. 마찬가지로이 명령을 사용하려면 Scrapy 크롤러 프로젝트 디렉토리에 있어야합니다.
이 명령의 -l 매개 변수를 사용하여 아래와 같이 현재 사용 가능한 크롤러 템플릿을 볼 수 있습니다.

보시다시피 현재 사용 가능한 크롤러 템플릿은 basic, crawl, csvfeed 및 xmlfeed입니다.
이 시점에서 크롤러 템플릿 중 하나를 기반으로 크롤러 파일을 생성 할 수 있습니다. 예를 들어 기본 템플릿을 사용하여 다음과 같이 "scrapy genspider -t template new crawler name, new crawler crawled domain name"형식의 크롤러 파일을 생성 할 수 있습니다. 표시됩니다.
 

확인 명령

크롤러 테스트는 더 까다롭기 때문에 계약 (contract9)을 사용하여 Scrapy에서 크롤러를 테스트합니다.
Scrapy에서 check 명령을 사용하여 크롤러 파일에 대한 계약 검사를 수행하십시오.
예를 들어 템플릿을 기반으로 방금 생성 한 크롤러 파일 weisuen.py의 계약 (계약)을 확인하려면 "스크롤러 확인 크롤러 이름"을 사용하여 구현할 수 있습니다. 현재 "확인"뒤의 크롤러 이름은 크롤러 파일 이름이 아니므로 다음과 같이 접미사없이.

크롤러 파일의 계약 검사를 통과하고 표시되는 결과는 "OK"임을 알 수 있습니다.

크롤링 명령

crawl 명령어를 통해 크롤러를 시작할 수 있습니다. 시작 형식은 "scrapy crawler name"입니다.
크롤러 다음에는 크롤러 프로젝트 이름이 아니라 크롤러 이름이옵니다.

목록 명령

Scrapy의 list 명령을 통해 현재 사용 가능한 크롤러 파일을 나열 할 수 있습니다.
예를 들어, 아래와 같이 크롤러 프로젝트 myfirstpjit가있는 디렉토리를 명령 줄에 입력 한 다음 스크래피 목록을 사용하여 현재 사용 가능한 크롤러 파일을 직접 나열 할 수 있습니다.

보시다시피 현재 사용할 수있는 크롤러 파일이 하나 있습니다.

 편집 명령

Scrapy의 편집 명령을 통해 해당 편집기를 직접 열어 크롤러 파일을 편집 할 수 있습니다.이 명령은 Windows에서 실행할 때 약간의 문제가 발생하며 Windows에서는 일반적으로 Python IDE (예 : PyCharm)를 사용하여 크롤러 프로젝트를 직접 대상으로 지정합니다. 관리 및 편집을 위해이 명령은 Linux에서 매우 편리합니다.

 구문 분석 명령

구문 분석 명령을 통해 지정된 URL URL을 얻고 해당 크롤러 파일을 처리 및 분석에 사용할 수 있습니다.
예를 들어 지정된 크롤러 파일이나
처리 기능 이 없기 때문에 "scrapy parse http://www.baidu.com"을 사용하여 Baidu 홈페이지 (htp : //www.baidu.com)를 가져올 수 있습니다. 기본 크롤러 파일과 기본 처리 기능은 아래와 같이 해당 처리에 사용됩니다.

"scrapy parse"명령어는 많은 매개 변수를 가지고 있으며 아래 그림과 같이 scrapy parse -h를 통해 특정 매개 변수를 확인할 수 있습니다.

옵션
=======
--help, -h              이 도움말 메시지를 표시하고 종료
--spider = SPIDER         하나를 찾지 않고이 스파이더 사용
-a NAME = VALUE           set spider 인수 (반복 가능)
--pipelines             프로세스 항목 파이프 라인을 통해
--nolinks은               링크를 따라 표시되지 않습니다 (추출 요청)
--noitems               하지 보여 긁어 항목
--nocolour              피하기 출력 색상 화하기 위해 pygments를 사용하여
--rules, -r             콜백을 발견하기 위해 사용 CrawlSpider 규칙
- callback = CALLBACK, -c CALLBACK
                        파싱을 위해이 콜백을 사용하십시오. 대신
                        콜백을
찾으십시오. --meta = META, -m META    는 요청에 추가 메타를 주입하십시오. 유효한
                        원시 json 문자열
이어야 합니다 .-- cbkwargs = CBKWARGS는     추가 콜백 kwargs를 요청에 주입해야합니다.
                        유효한 원시 json 문자열이어야합니다.
--depth = DEPTH, -d DEPTH
                        요청 구문 분석을위한 최대 깊이 [기본값 : 1]
--verbose, -v           각 깊이 수준을 하나씩 인쇄합니다.

전역 옵션
--------------
--logfile = FILE          로그 파일. 생략하면 stderr이 사용됩니다
.-- loglevel = LEVEL, -L LEVEL
                        로그 수준 (기본값 : DEBUG)
--nolog                 완전히 로깅 비활성화
--profile = FILE          python cProfile 통계를
FILE에          쓰기 --pidfile = FILE 프로세스 ID를 FILE에 쓰기
- -set = NAME = VALUE, -s NAME = VALUE
                        설정 / 재정의 설정 (반복 가능)
--pdb                   실패시 pdb 활성화
 

보시다시피 이러한 매개 변수는 크게 공통 매개 변수 (옵션)와 전역 매개 변수 (글로벌 옵션)의 두 가지 범주로 나뉩니다. 기본적으로 다른 명령에서 전역 매개 변수를 보았으므로 여기서는 주로 명령에 해당하는 매개 변수 ( 옵션).
다음은 표 12-2와 같이 일반적으로 사용되는 매개 변수와 그 의미를 요약 한 것입니다.

위의 표를 통해 narse 명령에 어떤 공통 매개 변수가 있는지 명확하게 알 수 있습니다.

추천

출처blog.csdn.net/someby/article/details/105440171