2017-03-18 1 views
-1

스탁 그램 로그인에 scrapy 사용. FormRequest를 사용하여 사용자 이름과 암호를 게시합니다. 및 COOKIES_ENABLED = Trueinstagram 사용자 로그인에 scrapy 사용

내 scrapy 코드 수 : 내가 scrapy crawl InsVideo 실행

import scrapy 
from scrapy.http import Request, FormRequest 
class InsSpider(scrapy.Spider): 
    name = 'InsVideo' 
    allowed_domains = ['instagram.com'] 

    url = 'https://www.instagram.com/' 
    url_login = 'https://www.instagram.com/accounts/login/ajax/' 

    def start_requests(self): 
     return [Request(self.url_login, callback=self.login)] 
    def login(self, response): 
     login_post = {'username': 'username', 
         'password': 'password'} 
     return [FormRequest.from_response(response, 
              formdata=login_post, 
              # callback=self.start_requests, 
              dont_filter=True 
             )] 

을하고, 오류 메시지를 반환 : 내가 코드와 뭐죠 잘못 몰라요

2017-03-18 12:15:49 [scrapy.core.engine] INFO: Spider opened 
2017-03-18 12:15:49 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 
2017-03-18 12:15:49 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023 
2017-03-18 12:15:52 [scrapy.downloadermiddlewares.cookies] DEBUG: Received cookies from: <200 https://www.instagram.com/robots.txt> 
Set-Cookie: mid=WMy0dwALAAGACJPXOYvoxHfHO00m; expires=Fri, 13-Mar-2037 04:15:51 GMT; Max-Age=630720000; Path=/ 

Set-Cookie: csrftoken=5JrsDnF569QLnmIzg4h0VOBRJ8gHQZZi; expires=Sat, 17-Mar-2018 04:15:51 GMT; Max-Age=31449600; Path=/; Secure 

2017-03-18 12:15:52 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.instagram.com/robots.txt> (referer: None) 
2017-03-18 12:15:52 [scrapy.downloadermiddlewares.cookies] DEBUG: Sending cookies to: <GET https://www.instagram.com/accounts/login/ajax/> 
Cookie: mid=WMy0dwALAAGACJPXOYvoxHfHO00m; csrftoken=5JrsDnF569QLnmIzg4h0VOBRJ8gHQZZi 

2017-03-18 12:15:52 [scrapy.downloadermiddlewares.cookies] DEBUG: Received cookies from: <405 https://www.instagram.com/accounts/login/ajax/> 
Set-Cookie: csrftoken=5JrsDnF569QLnmIzg4h0VOBRJ8gHQZZi; expires=Sat, 17-Mar-2018 04:15:52 GMT; Max-Age=31449600; Path=/; Secure 

2017-03-18 12:15:52 [scrapy.core.engine] DEBUG: Crawled (405) <GET https://www.instagram.com/accounts/login/ajax/> (referer: None) 
2017-03-18 12:15:52 [scrapy.spidermiddlewares.httperror] INFO: Ignoring response <405 https://www.instagram.com/accounts/login/ajax/>: HTTP status code is not handled or not allowed 
2017-03-18 12:15:52 [scrapy.core.engine] INFO: Closing spider (finished) 

합니다. 감사합니다.

답변

0

url_login이 잘못되었으므로, https://www.instagram.com/accounts/login/이어야합니다.

어쨌든 Istagram 로그인 페이지는 JavaScript를 통해 로그인 양식을 생성합니다. 브라우저의 "페이지 소스보기"기능으로 볼 수 있습니다. 결과 HTML 코드에는 <form> 태그가 없습니다. 이것이 바로 Scrapy가 보는 것입니다. JavaScript 코드 (아마 헤드리스 브라우저)를 실행하려면 시스템을 사용해야합니다.

[편집] 수정 된 문장

+1

안녕하세요, 저는 두 가지 방법으로 instagram에 로그인 할 수 있습니다. 치료와 함께 쿠키 설정을 사용하십시오. 헤더와 쿠키가있는 요청 lib를 사용합니다. 그러나 FormRequest는 필요하지 않습니다. 대답 해줘서 고마워. –

관련 문제