Python Scrapy - Не могу войти на сайт - PullRequest
0 голосов
/ 20 ноября 2018

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

test.py

import scrapy
from scrapy.http import FormRequest
from scrapy.utils.response import open_in_browser

class Test_spider(scrapy.Spider):
    """
    Log into the provided site with Scrapy
    """

    name = 'test'
    start_urls = ['https://www.privatelenderdatafeed.com/login/']


    def parse(self, response):
        """
        Send login data and use "from_response" to pre-populate session related data as per the docs and what I need for this site
        """

        return FormRequest.from_response(
            response,
            formdata={'ajaxreferred':'1',       # Not sure if I need this? It's included in the form data when I checked the site with dev tools so I'm including it
                      'email':'email',          # Email
                      'password':'password'     # Password
                      },
            callback = self.after_login)


    def after_login(self, response):
        """
        Open browser to check status 
        """

        open_in_browser(response)

Я явно заставляю Scrapy открывать браузер независимо от того, входит ли он на сайт или нет, чтобы я мог визуально проверить его состояние. Другими словами, если он все еще находится на странице входа, он каким-то образом / каким-то образом потерпел неудачу. В противном случае, если я вошел в систему, я должен увидеть другую страницу. Очевидно, он не входит в систему, и я просто продолжаю видеть страницу входа. Что здесь происходит?

1 Ответ

0 голосов
/ 20 ноября 2018

Если вы посмотрите на запрос POST, размещенный на веб-сайте, вы увидите, что причина: xhr .

web developer

Это означает, что это не «нормальная» отправка HTML-формы, здесь задействован некоторый javascript.

Чтобы обойти это, после того, как вы отправили запрос на публикацию, вам нужно будет отправить запрос на следующемЯ имею в виду, что вам нужно знать следующий URL:

return FormRequest.from_response(
    response,
    formdata={'ajaxreferred':'1',       # Not sure if I need this? It's included in the form data when I checked the site with dev tools so I'm including it
              'email':'email',          # Email
              'password':'password'     # Password
              },
    yield Request('https://after/login/url', callback=self.after_login)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...