Python 파충류 프레임 의 Scrapy 에서 Spider 의 용법

5061 단어 PythonScrapySpider
Scrapy 에서 Spider 사용법
Spider 류 는 어떤(또는 어떤)사 이 트 를 어떻게 기어 오 르 는 지 정의 합 니 다.기어 오 르 는 동작(예 를 들 어 링크 를 따라 갈 지 여부)과 웹 페이지 의 내용 에서 구조 화 된 데 이 터 를 추출 하 는 방법(item 을 기어 오 르 는 방법)을 포함한다.다시 말 하면 Spider 는 귀하 가 기어 오 르 는 동작 을 정의 하고 특정한 웹 페이지(또는 일부 웹 페이지)를 분석 하 는 곳 입 니 다.
spider 에 게 기어 오 르 는 순환 은 다음 과 같다.
1.Request 를 초기 URL 로 초기 화하 고 리 셋 함 수 를 설정 합 니 다.이 request 다운로드 가 끝나 고 돌아 올 때 response 를 생 성하 고 이 반전 함수 에 매개 변수 로 전 달 됩 니 다.spider 의 초기 request 는 start 호출 을 통 해requests()에서 가 져 왔 습 니 다.start_requests()start 읽 기url 의 URL 이 며,parse 를 리 셋 함수 로 Request 를 생 성 합 니 다.
2.리 셋 함수 에서 되 돌아 오 는(웹 페이지)내용 을 분석 하고 ltem 대상 이나 Request 또는 둘 을 포함 한 교체 가능 한 용 기 를 되 돌려 줍 니 다.되 돌아 오 는 Request 대상 은 Scrapy 처 리 를 거 쳐 해당 내용 을 다운로드 하고 설 정 된 callback 함수(함수 가 같 을 수 있 음)를 호출 합 니 다.
3.리 셋 함수 에서 선택 기(Selectors)(BeautifulSoup,Ixml 또는 사용 하고 싶 은 모든 해석 기)를 사용 하여 웹 페이지 내용 을 분석 하고 분석 한 데이터 에 따라 item 을 생 성 할 수 있 습 니 다.
4.마지막 으로 spider 에서 돌아 온 item 은 데이터베이스(일부 ltem Pipeline 에서 처리)에 저장 되 거나 Feed exports 를 사용 하여 파일 에 저 장 됩 니 다.
이 순환 은 모든 종류의 spider(얼마)에 적용 되 지만 Scrapy 는 다양한 수 요 를 위해 다양한 기본 spider 를 제공 합 니 다.이후 이 스파이 더 들 에 대해 논의 할 예정 이다.
Spider
scrapy.spider.Spider 는 가장 간단 한 spider 입 니 다.모든 다른 spider 는 이 클래스(Scrapy 가 가지 고 있 는 다른 spider 와 자신 이 만 든 spider 포함)를 계승 해 야 합 니 다.주어진 start 만 요청 합 니 다.urls / start_requests,되 돌아 오 는 결과(resulting responses)에 따라 spider 의 parse 방법 을 호출 합 니 다.
name
spider 이름 을 정의 하 는 문자열(string).spider 의 이름 은 Scrapy 가 spider 를 어떻게 찾 고 초기 화 하 는 지 정의 하기 때문에 유일한 것 이 어야 합 니 다.하지만 같은 spider 인 스 턴 스(instance)를 여러 개 만 들 수 있 습 니 다.제한 이 없습니다.name 은 spider 의 가장 중요 한 속성 이 며 필수 입 니 다.
이 spider 가 하나의 사이트(single domain)를 기어 오 르 면 흔히 볼 수 있 는 방법 은 이 사이트(domain)(접 두 사 를 추가 하거나 추가 하지 않 음)로 spider 라 는 이름 을 짓 는 것 이다.예 를 들 어 spider 가 my website.com 을 기어 오 르 면 이 spider 는 보통 my website 라 고 명명 된다.
allowed_domains
선택 할 수 있다.spider 가 기어 올 라 갈 수 있 는 도 메 인 이름(domain)목록(list)을 포함 합 니 다.OffsiteMiddleware 가 활성화 되 었 을 때 도 메 인 이름 이 목록 에 없 는 URL 은 따라 가지 않 습 니 다.
start_urls
URL 목록.특정 URL 을 만 들 지 않 았 을 때 spider 는 이 목록 에서 기어 오 르 기 시작 합 니 다.따라서 첫 번 째 로 가 져 온 페이지 의 URL 은 이 목록 중 하나 입 니 다.추가 URL 은 가 져 온 데이터 에서 추출 됩 니 다.
start_requests()
이 방법 은 교체 가능 한 대상(iterable)을 되 돌려 야 합 니 다.이 대상 은 spider 가 기어 오 르 기 위 한 첫 번 째 Request 를 포함 하고 있 습 니 다.
spider 가 기어 오 르 기 시작 하고 URL 을 만 들 지 않 았 을 때 이 방법 이 호출 됩 니 다.URL 이 지정 되 었 을 때 makerequests_from_url()은 Request 대상 을 만 들 기 위해 호출 됩 니 다.이 방법 은 Scrapy 에 한 번 만 호출 되 기 때문에 생 성기 로 구현 할 수 있 습 니 다.
이 방법의 기본 구현 은 start 를 사용 합 니 다.urls 의 url 생 성 Request.
최초 로 웹 사 이 트 를 찾 은 Request 대상 을 수정 하려 면 이 방법 을 다시 쓸 수 있 습 니 다.예 를 들 어 시작 할 때 POST 로 특정한 사이트 에 로그 인 할 필요 가 있다 면 이렇게 쓸 수 있 습 니 다.

def start_requests(self) :
    return [scrapy.FormRequest("http : / /ww. example.com/login",
        formdata={ 'user' : 'john', ' pass ' : 'secret'},
        ca77back=se1f.1ogged_in)]
 
def logged_in(self,response) :
## here you would extract links to follow and return Requests for
## each of them,with another ca77back
pass
parse
response 가 리 셋 함 수 를 지정 하지 않 았 을 때 이 방법 은 Scrapy 가 다운로드 한 response 를 처리 하 는 기본 방법 입 니 다.
parse 는 response 를 처리 하고 처 리 된 데이터 와(/또는)따라 가 는 URL 을 되 돌려 줍 니 다.Spider 는 다른 Request 의 리 셋 함수 에 대해 서도 같은 요 구 를 가지 고 있 습 니 다.
이 방법 및 기타 Request 리 셋 함 수 는 Request 및(또는)ltem 을 포함 하 는 교체 가능 한 대상 을 되 돌려 야 합 니 다.
파라미터:response-분석 에 사용 되 는 response
시작 모드
start_urls
start_urls 는 목록 입 니 다.
start_requests
start 사용requests()재 작성 startur1s,Request()방법 으로 요청 을 직접 보 내 려 면:

def start_requests(se7f):
    """  start_urls   """
    yield scrapy.Request(ur1='http://quotes.toscrape.com/page/1/'cal1back=self.parse)
scrapy.Request
scrapy.Request 는 요청 대상 입 니 다.만 들 때 리 셋 함 수 를 만들어 야 합 니 다.
데이터 저장
-o 를 사용 하여 데 이 터 를 일반적인 형식 으로 저장 할 수 있 습 니 다(접미사 이름 에 따라 저장)
지원 하 는 형식 은 다음 과 같 습 니 다.
  • json
  • jsonlines
  • jl
  • csv
  • xml
  • marshal
  • pickle
  • 사용 방법:
    
    scrapy crawl quotes2 -o a.json
    사례:Spider 사례
    
    ## *- coding: utf-8 -*-
     
    import scrapy
     
    clTass Quotes2spider(scrapy.spider):
        name = 'quotes2'
        a7lowed_domains = [ 'toscrape.com ' ]
        start_urls = [ ' http: //quotes.toscrape.com/ page/2/ ']
     
        def parse(self,response):
            quotes = response.css('.quote ' )
            for quote in quotes:
                text = quote.css( '.text: : text ' ).extract_first()
                auth = quote.css( '.author : :text ').extract_first()
                tages = quote.css('.tags a: :text' ).extract()
                yield dict(text=text , auth=auth, tages=tages)
    
    파 이 썬 파충류 프레임 워 크 의 Scrapy 에서 Spider 의 사용법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Spider 의 용법 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기