在scrapy中使用post请求登录

时间:2016-01-04 07:32:22

标签: scrapy

我想登录rediffmail,但生成错误

  

exceptions.NameError:全局名称' FormRequest'未定义

这里是我的蜘蛛代码:

import scrapy
from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider
from scrapy.http import Request
from rediffmail.items import RediffmailItem
class MySpider(BaseSpider):
    name = 'rediffmail'
    allowed_domains    = ["rediff.com"]
    start_urls = ['https://mail.rediff.com/cgi-bin/login.cgi']

    def parse(self, response):
        return [FormRequest.from_response(response,formdata={'login': 'XXXX', 'passwd': 'XXXX'},callback=self.after_login)]     

    def after_login(self, response):
        # check login succeed before going on
        if "authentication failed" in response.body:
            self.logger.error("Login failed")
            return

请检查我的代码中是否有任何问题。我是python初学者

1 个答案:

答案 0 :(得分:3)

您错过了FormRequest的导入。在您的scrapy版本中,FormRequest位于scrapy.http

在导入部分添加此行:

from scrapy.http import FormRequest
相关问题