Crawling con una sesión autenticada en Scrapy
En miPregunta anterio, No era muy específico sobre mi problema (scraping con una sesión autenticada con Scrapy), con la esperanza de poder deducir la solución de una respuesta más general. Probablemente debería haber usado la palabracrawling
.
Entonces, aquí está mi código hasta ahora:
class MySpider(CrawlSpider):
name = 'myspider'
allowed_domains = ['domain.com']
start_urls = ['http://www.domain.com/login/']
rules = (
Rule(SgmlLinkExtractor(allow=r'-\w+.html Como puede ver, la primera página que visito es la página de inicio de sesión. Si aún no estoy autenticado (en elparse
función), llamo a mi personalizadologin
función, que publica en el formulario de inicio de sesión. Entonces, si yoa. autenticado, quiero seguir arrastrándome.
l problema es que elparse
función que intenté anular para iniciar sesión, ahora ya no hace las llamadas necesarias para raspar más páginas (supongo). Y no estoy seguro de cómo guardar los elementos que creo.
Alguien ha hecho algo como esto antes? (Autenticar, luego rastrear, usando unaCrawlSpider
) Cualquier ayuda sería 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 puede ver, la primera página que visito es la página de inicio de sesión. Si aún no estoy autenticado (en elparse
función), llamo a mi personalizadologin
función, que publica en el formulario de inicio de sesión. Entonces, si yoa. autenticado, quiero seguir arrastrándome.
l problema es que elparse
función que intenté anular para iniciar sesión, ahora ya no hace las llamadas necesarias para raspar más páginas (supongo). Y no estoy seguro de cómo guardar los elementos que creo.
Alguien ha hecho algo como esto antes? (Autenticar, luego rastrear, usando unaCrawlSpider
) Cualquier ayuda sería apreciada