2017-11-12 3 views
0

나는 scrapy를 사용하여 사이트에 로그인하려고합니다. 나는 예제 사이트를 가져 와서 확인했다. 해당 사이트에서 작동하고 있습니다. 그런 다음 다른 사이트를 방문하여 확인했습니다. 작동하지 않습니다. 방금 URL을 변경하고 코드를 실행했습니다. 하지만 일하지 않아. 무엇이 문제일까요?Scrapy를 사용하여 로그인하지 못했습니다.

# -*- coding: utf-8 -*- 
import scrapy 
from scrapy.http import FormRequest 
from scrapy.utils.response import open_in_browser 

class QuoteSpider(scrapy.Spider): 
    name = 'Quote' 
    allowed_domains = ["quotes.toscrape.com"] 
    start_urls = (
     'http://quotes.toscrape.com/login', 
    ) 

    def parse(self, response): 
     token=response.xpath('//input[@name="csrf_token"]/@value').extract_first() 

     return FormRequest.from_response(response,formdata={'csrf_token':token,'password':'foo','username':'foo'},callback=self.scape_home_page) 

    def scape_home_page(self, response): 
     open_in_browser(response) 

괜찮습니다. 다른 하나는 그렇지 않습니다.

# -*- coding: utf-8 -*- 
import scrapy 
from scrapy.http import FormRequest 
from scrapy.utils.response import open_in_browser 

class BucketsSpider(scrapy.Spider): 
    name = 'buckets' 
    allowed_domains = ['http://collegekart.in/login'] 
    start_urls = ['http://collegekart.in/login/'] 

    def parse(self, response): 
     token=response.xpath('//meta[@name="csrf-token"]/@content').extract_first() 
     print(token) 
     return FormRequest.from_response(response,formdata={'csrf-token':token,'password':'*********','username':'**************'},callback=self.scape_home_page) 

    def scape_home_page(self, response): 
     open_in_browser(response) 
     print("yes") 

이것은 작동하지 않습니다. 응답이 브라우저에서 열리지 않습니다. 이 문제를 해결할 수있는 방법을 제안 해주세요.

+0

제발 도와주세요. –

답변

1

나는이 문제가 귀하의 allowed_domains = ['http://collegekart.in/login']과 같다고 생각합니다. allowed_domains = ['collegekart.in']으로 변경해보십시오. 다른 응답이 아마도 걸러 내고 있습니다.

+0

그것의 작동. Thanq so much –

+0

'collegekart.in'으로 변경하면 해당 페이지로 리디렉션되지만 'collegekart.in/users'로 리디렉션되어야합니다. 'collegekart.in'은 유효한 링크가 아닙니다. 이것을 수정할 수있는 방법이 있습니까? –

+0

문제가 해결되었습니다. 우리는 응답으로 url을 대체해야합니다. –