python 파충류 프레임 워 크 scrapy 시 뮬 레이 션 로그 인 작업 예제 구현

이 사례 는 python 파충류 프레임 워 크 scrapy 가 모 의 로그 인 작업 을 실현 하 는 것 을 보 여 준다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
1.배경:
처음 온 pythoner 는 처음에 모든 사이트 가 HTML,json 데 이 터 를 분석 하 는 것 이 아니 라 많은 문 제 를 소홀히 했다 고 생각 했 습 니 다.많은 사이트 들 이 파충류 에 반대 하기 위해 사용 가능 한 프 록 시 IP 주소 풀 외 에 도 로그 인 이 필요 합 니 다.예 를 들 어 많은 정 보 는 로그 인 한 후에 야 얻 을 수 있다 는 것 을 알 고 있 습 니 다.그러나 자주 로그 인 한 후에 인증 코드(일부 사이트 에서 직접 인증 코드 를 입력 하 라 고 합 니 다)가 나타 납 니 다.이것 은 함정 에 빠 졌 습 니 다.운 비 학생 들 이 힘 들 기 때문에 반대로 해 야 합 니 다.그러면 우 리 는 어떻게 해 야 합 니까?인증 코드 는 물론 이 고 수 동 으로 인증 을 입력 하거나 클 라 우 드 코드 플랫폼 을 직접 사용 할 수 있 습 니 다.여기 서 우 리 는 scrapy 의 로그 인 용법 을 소개 합 니 다.
 테스트 로그 인 주소:http://example.webscraping.com/places/default/user/login
 테스트 홈 페이지:http://example.webscraping.com/user/profile
1.scrapy 프로젝트 와 spider 를 만 드 는 방법 을 설명 하지 않 습 니 다.앞의 관련 글 을 볼 수 있 습 니 다.
2.빠 른 로그 인 방법
우 리 는 여기 서 간단 한 소 개 를 했 습 니 다.우 리 는 모두 scrapy 의 기본 요청 절차 가 start 라 는 것 을 알 고 있 습 니 다.request 방법 start 옮 겨 다 니 기urls 목록,그리고 make_requests_from_url 방법,안에서 Request 방법 을 실행 하고 start 요청urls 에 있 는 주 소 는 GET 방법 이 아니 라 POST 방법 을 사용 하여 자주 말 하 는 로그 인 입 니 다.
1.우선 우 리 는 start_reqeusts 방법 을 바 꾸 고 GET 로그 인 페이지 의 HTML 정 보 를 직접 작성 합 니 다.
2.start_request 방법 GET 에서 데 이 터 를 얻 은 후에 callback 매개 변 수 를 사용 하여 response 를 받 은 후에 어떤 방법 을 실행 해 야 합 니까?그리고 login 방법 에 로그 인 사용자 이름과 비밀 번 호 를 기록 한 다음 에 Request 서브 클래스 scrapy.FormRequest 이라는 방법 으로 데 이 터 를 제출 해 야 합 니 다.이 방법 은 FormRequest.from_response 방법 입 니 다.
어떤 사람들 은 이 from__response 의 기본 적 인 사용 은 response 대상 을 첫 번 째 매개 변수 로 입력 하 는 것 입 니 다.이 방법 은 페이지 에 있 는 form 폼 에서 사용자 가 FormRequest 대상 을 만 드 는 데 도움 을 줄 것 입 니 다.가장 중요 한 것 은 숨겨 진 input 표지 판 에 있 는 정 보 를 자동 으로 표현 하 는 데 도움 을 줄 것 입 니 다.이 방법 을 사용 하 십시오.우 리 는 사용자 이름과 비밀 번 호 를 직접 쓰 면 됩 니 다.우 리 는 맨 뒤에 전통 적 인 방법 을 소개 합 니 다.
3.parse_login 방법 은 양식 을 제출 한 후 callback 리 셋 함수 가 실행 할 방법 을 지정 하여 성공 여 부 를 검증 하 는 것 입 니 다.여기 서 우 리 는 response 에서 Welcome Liu 라 는 단 어 를 직접 검색 하면 로그 인 성공 을 증명 합 니 다.이것 은 이해 하기 쉽 습 니 다.중점 은 yield  from super().start_resquests() 입 니 다.이것 은 로그 인 에 성공 하면 로그 인 성공 후 Cookie 값 을 직접 가 져 가 는 방법 start_urls 안의 주 소 를 의미 합 니 다.이렇게 되면 로그 인 에 성공 한 response 는 parse 에 직접 쓸 수 있 습 니 다.

# -*- coding: utf-8 -*-
import scrapy
from scrapy import FormRequest,Request
class ExampleLoginSpider(scrapy.Spider):
  name = "login_"
  allowed_domains = ["example.webscraping.com"]
  start_urls = ['http://example.webscraping.com/user/profile']
  login_url = 'http://example.webscraping.com/places/default/user/login'
  def parse(self, response):
    print(response.text)
  def start_requests(self):
    yield scrapy.Request(self.login_url,callback=self.login)
  def login(self,response):
    formdata = {
      'email':'[email protected]','password':'12345678'}
    yield FormRequest.from_response(response,formdata=formdata,
                    callback=self.parse_login)
  def parse_login(self,response):
    # print('>>>>>>>>'+response.text)
    if 'Welcome Liu' in response.text:
      yield from super().start_requests()

어떤 학생 들 은 login 방법 에 reture 라 고 써 야 하지 않 느 냐 고 물 었 을 수도 있 습 니 다.사실 위의 문법 은 아래 의 이런 문법 과 같은 효과 입 니 다.CSRF 가 하나 더 있 으 면 login 에 직접 써 서 CSRF 정 보 를 얻 고 formdata 에 써 서 사용자 이름과 비밀 번호 와 함께 제출 할 수도 있 습 니 다.
return [FormRequest.from_response(response,formdata=formdata,callback=self.parse_login)]
로그 인 성공

3.전통 로그 인 방법:
1.먼저 한 가지 일 을 명 확 히 해 야 한다.일반적인 상황 에서 로그 인 해 야 하 는 사 이 트 는 사용자 와 비밀번호 만 있 는 것 이 아니 라 위 에서 말 한 전통 적 인 로그 인 모델 에 대해 이야기 하 자.사용자 가 로그 인 할 때 계 정 정보 만 로그 인 하 는 것 이 아 닙 니 다.흔히 볼 수 있 는 직관 적 인 인증 코드 와 CSRF 정 보 를 제외 하고 다른 정 보 를 제출 해 야 할 수도 있 습 니 다.저 희 는 이 를 모두 추출 하여 서버 에 제출 해 야 합 니 다.

2.form 폼 아래 에서 display:none 의 div 라벨 을 찾 았 습 니 다.안에 있 는 input 태그 의 value 값 은 바로 우리 가 제출 해 야 할 데이터 입 니 다.그러면 우 리 는 그 를 추출 합 니 다.

더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,,,,,,,,,,,,
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기