Проблема с входом на сайт с помощью scrapy - PullRequest
0 голосов
/ 02 февраля 2019

Я хочу войти на сайт, а затем собрать несколько деталей, но не могу войти, используя scrapy.Вот мой код:

from scrapy import Spider
from scrapy.http import FormRequest
from lxml import html
from scrapy.utils.response import open_in_browser


class QuotesSpider(Spider):
    name = 'quotes'
    start_urls = ('https://app.thecoachingmanual.com/login',)

    def parse(self, response):
        return FormRequest.from_response(response,
                                         formdata={'emailAddress':'email@gmail.com','password':'MyPassword'},
                                         callback=self.scrape_pages)

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

    # Complete your code here to scrape the pages that you are redirected to after logging in

    # ....
    # ....

1 Ответ

0 голосов
/ 03 февраля 2019

Ваш код совершенно неверный

Открыть https://app.thecoachingmanual.com/login, Открыть DevTools и нажать на вкладку Network, затем проверить Preserve logs

Посмотрите, на какой URL-запрос идетотправлено, а также проанализируйте Form Data, чтобы увидеть, какие поля отправляются

from scrapy.http import FormRequest
import logging


class QuotesSpider(Spider):
    name = 'quotes'

    headers = {
        'origin': 'https://app.thecoachingmanual.com',
        'accept-encoding': 'gzip, deflate, br',
        'accept-language': 'en-US,en;q=0.9',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
        'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',  #NOTICE THIS
        'accept': 'application/json, text/javascript, */*; q=0.01',
        'referer': 'https://app.thecoachingmanual.com/',
        'authority': 'api.thecoachingmanual.com',
        'dnt': '1',
    }

    def start_requests(self):

        data = '{"emailAddress":"test@gmail.com","password":"test"}'
        yield FormRequest('https://api.thecoachingmanual.com/commandapi/auth/login', 
            callback=self.login,
            headers=self.headers, 
            formdata=data,
            )

    def login(self, response):

        logging.info(response.status)
        logging.info(response.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...