тогда была вызвана функция разбора.
мпредыдущий вопросЯ не был очень конкретным в отношении моей проблемы (соскоб с аутентифицированного сеанса в Scrapy) в надежде вывести решение из более общего ответа. Наверное, мне следовало бы использовать словоcrawling
.
Итак, вот мой код:
class MySpider(CrawlSpider):
name = 'myspider'
allowed_domains = ['domain.com']
start_urls = ['http://www.domain.com/login/']
rules = (
Rule(SgmlLinkExtractor(allow=r'-\w+.htmlКак видите, первая страница, которую я посещаю - это страница входа. Если я еще не аутентифицирован (вparse
функция), я называю свой обычайlogin
функция, которая отправляет сообщения в форму входа. Тогда, если яя Я хочу продолжить сканирование.
Проблема в том, чтоparse
Функция, которую я пытался переопределить, чтобы войти в систему, теперь больше не делает необходимых вызовов, чтобы очистить любые дальнейшие страницы (я предполагаю). И я не уверен, как сохранить сохраненные мной элементы.
Кто-нибудь делал что-то подобное раньше? (Аутентифицировать, затем сканировать, используяCrawlSpider
) Любая помощь будет оценена.
), callback='parse_item', follow=True),
)
def parse(self, response):
hxs = HtmlXPathSelector(response)
if not "Hi Herman" in response.body:
return self.login(response)
else:
return self.parse_item(response)
def login(self, response):
return [FormRequest.from_response(response,
formdata={'name': 'herman', 'password': 'password'},
callback=self.parse)]
def parse_item(self, response):
i['url'] = response.url
# ... do more things
return i
Как видите, первая страница, которую я посещаю - это страница входа. Если я еще не аутентифицирован (вparse
функция), я называю свой обычайlogin
функция, которая отправляет сообщения в форму входа. Тогда, если яя Я хочу продолжить сканирование.
Проблема в том, чтоparse
Функция, которую я пытался переопределить, чтобы войти в систему, теперь больше не делает необходимых вызовов, чтобы очистить любые дальнейшие страницы (я предполагаю). И я не уверен, как сохранить сохраненные мной элементы.
Кто-нибудь делал что-то подобное раньше? (Аутентифицировать, затем сканировать, используяCrawlSpider
) Любая помощь будет оценена.