Rastreio com uma sessão autenticada no Scrapy
No meuprevious question, Eu não era muito específico sobre o meu problema (raspando com uma sessão autenticada com o Scrapy), na esperança de poder deduzir a solução de uma resposta mais geral. Eu provavelmente deveria ter usado a palavracrawling
.
Então, aqui está o meu código até agora:
class MySpider(CrawlSpider):
name = 'myspider'
allowed_domains = ['domain.com']
start_urls = ['http://www.domain.com/login/']
rules = (
Rule(SgmlLinkExtractor(allow=r'-\w+.htmlComo você pode ver, a primeira página que visito é a página de login. Se ainda não estiver autenticado (noparse
function), chamo meu @ personalizalogin
, que é postada no formulário de login. Então, se euso autenticado, quero continuar rastreando.
O problema é que oparse
unção @, tentei substituir para fazer login, agora não faz mais as chamadas necessárias para raspar outras páginas (suponho). E não sei como salvar os itens que eu criei.
Alguém já fez algo assim antes? (Autentique e depois rastreie usando umCrawlSpider
) Qualquer ajuda seria apreciada
), 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
Como você pode ver, a primeira página que visito é a página de login. Se ainda não estiver autenticado (noparse
function), chamo meu @ personalizalogin
, que é postada no formulário de login. Então, se euso autenticado, quero continuar rastreando.
O problema é que oparse
unção @, tentei substituir para fazer login, agora não faz mais as chamadas necessárias para raspar outras páginas (suponho). E não sei como salvar os itens que eu criei.
Alguém já fez algo assim antes? (Autentique e depois rastreie usando umCrawlSpider
) Qualquer ajuda seria apreciada