2017-12-19 2 views

답변

0

첫째, 대신 return

yield를 사용 할 때마다 당신은 요청을 모방하려고 :

from scrapy.item import Item, Field 
from scrapy.http import FormRequest 
from scrapy.spider import Spider 
from scrapy.utils.response import open_in_browser 
from scrapy import Request 


class AliceWeb2(Spider): 
    name = "login" 

    # Start on the welcome page 
    def start_requests(self): 
     return [Request(
       "http://aliceweb.mdic.gov.br//usuario/login/", 
       callback=self.parse_welcome)] 

    # Post welcome page's first form with the given user/pass 
    def parse_welcome(self, response): 
     formdata = {'logUser': 'rtadewald', 
        'logPass': '123'} 
     return FormRequest.from_response(
      response, 
      formdata=formdata) 

을 나는이 있어요 , Dev Tools를 열고 해당 URL의 cURL을 복사 한 다음이 https://curl.trillworks.com/ 웹 사이트로 이동하여 Python 코드를 얻은 다음 해당 코드를 Scrapy로 다시 사용하십시오.

enter image description here

class AliceWeb2(Spider): 
    name = "login" 

    # Start on the welcome page 
    def start_requests(self): 
     headers = { 
      'Origin': 'http://aliceweb.mdic.gov.br', 
      'Accept-Encoding': 'gzip, deflate', 
      'Accept-Language': 'en-US,en;q=0.9', 
      'Upgrade-Insecure-Requests': '1', 
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36', 
      'Content-Type': 'application/x-www-form-urlencoded', 
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 
      'Cache-Control': 'max-age=0', 
      'Referer': 'http://aliceweb.mdic.gov.br/usuario/recuperar-senha', 
      'Connection': 'keep-alive', 
      'DNT': '1', 
     } 

     yield Request('http://aliceweb.mdic.gov.br//usuario/login?tx_usuario=ABC&tx_senha=ABC', callback=self.parse_welcome, headers=headers, data=data, method="POST") 

    def parse_welcome(self, response): 
     #do something here 

편집 1 : 내가 개발 도구에 요청을 관찰 , 나는 이러한 매개 변수가 스크린 샷 FORM DATA를 참조 전송되고 있었다 보았다.

(다른 팁) : preserver log을 확인하여 로그인 후 다른 페이지로 리디렉션되는 경우 이전 페이지에서 전송 된 요청을 볼 수 있습니다.

대신 스크린 샷의

enter image description here

+0

당신의 오류 메시지를 게시! 정말 고맙습니다! 간단한 질문 대신 'http : //aliceweb.mdic.gov.br//usuario/login? tx_usuario = ABC & tx_senha = ABC'**에 요청해야한다는 것을 어떻게 알았습니까? * http : //aliceweb.mdic.gov.br//usuario/login** 고마워! 편집 1 : "로그 보존"을 선택하면 표시되는 양식 데이터를 볼 수 없습니다. 다른 옵션이 있습니까? https://i.stack.imgur.com/RBwR2.png –

+0

@RodrigoSoaresTadewald 불가능합니다 ... 해당 매개 변수를 확인해야합니다 ... 어떤 크롬 버전을 사용하고 있습니까? 그것은 모든 크롬 버전 BTW에서 그 매개 변수를 표시해야합니다 .... 잘못된 사용자/패스 조합을 입력하고 그들이 나타나면보십시오보십시오 – Umair

관련 문제