Я понимаю, что вы просите, но вы просто не можете «вручную войти» с помощью scrapy, вам нужно наложить на него куки.
Лучший способом я вижу, чтобы сделать это с помощью Selenium для входа и дайте ему создать печенье, чтобы кормить Scrapy вот как:
def get_cookies(self):
driver = webdriver.Firefox()
base_url = "http://www.example.com/login"
driver.get(base_url)
#Code to login
driver.find_element_by_name("username").send_keys("my_username")
driver.find_element_by_name("password").send_keys("my_password")
driver.find_element_by_name("submit").click()
#get the cookies created
cookies = driver.get_cookies()
driver.close()
return cookies
def parse(self, response):
return Request(url="http://my_domain.com/",
cookies=self.get_cookies(),
callback=self.login)
def login(self, response):
#You'll have the cookies here
кода может потребоваться некоторые настройки здесь и там, но это общее идея
Что вы пробовали? Вы прочитали [документацию, связанную с выполнением входа в систему] (http://doc.scrapy.org/en/latest/topics/request-response.html#topics-request-response-ref-request-userlogin)? –
Да, конечно, у меня есть. Тем не менее, я думаю, что класс FormRequest отлично не обрабатывает все скрытые поля ввода. И так как остальная часть соскабливания довольно прямолинейна, и ее нужно выполнить только один раз, ручной вход в систему выглядит наиболее эффективным способом. – OutOfTheBox
_However, я думаю, что класс FormRequest отлично обрабатывает все скрытые поля ввода. Почему вы так думаете? у вас есть образец ввода и тестовый код, показывающий проблему? Трудно помочь вам без доказательства того, что что-то не работает, как вы ожидаете. Документы говорят, что это возможно (и я использовал его сам иногда), поэтому должно быть что-то особенное или неочевидное в вашем случае использования. –