scrapy框架:登录scrape导航

scrapy框架:登录scrape导航,scrapy,Scrapy,如何进行表单登录,然后使用scrapy处理该会话 例如考虑一个具有登录验证的网站,它有三个与登录会话链接的不同页面。 因此,使用scrapy,首先登录,然后在主页中刮取一些,然后按照主页中可用的特定链接,点击链接并从该页面刮取。然后再次回到主页,然后点击另一个链接,依此类推。 我有一个文件ccbank_spider.py,下面是内容 class LoginSpider(BaseSpider): #some code #for hitting and parsing of the Acco

如何进行表单登录,然后使用scrapy处理该会话

例如考虑一个具有登录验证的网站,它有三个与登录会话链接的不同页面。 因此,使用scrapy,首先登录,然后在主页中刮取一些,然后按照主页中可用的特定链接,点击链接并从该页面刮取。然后再次回到主页,然后点击另一个链接,依此类推。 我有一个文件ccbank_spider.py,下面是内容

class LoginSpider(BaseSpider):

 #some code

 #for hitting and parsing of the Account URL
 for accountURL in (strip(s) for itemArr in items for s in itemArr['accountURL']):
    print accountURL
    yield request(accountURL, callback=self.account_transactions)

 def account_transactions(self, response):
  print 'print text'
  return None
我得到下面的错误

          File "D:\NextGen\workspace\tutorial\tutorial\spiders\ccbank_spider.py", line       45, in after_login
       yield request(accountURL, callback=self.account_transactions)
   exceptions.TypeError: 'module' object is not callable

这是关于您的第一个问题登录的文档:

class LoginSpider(BaseSpider):
    name = 'example.com'
    start_urls = ['http://www.example.com/users/login.php']

    def parse(self, response):
        return [FormRequest.from_response(response,
                    formdata={'username': 'john', 'password': 'secret'},
                    callback=self.after_login)]

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

        # continue scraping with authenticated session...
至于问题的另一部分,您可以删除所有您想要删除的链接,也可以删除表单主页,并针对每个新请求执行以下操作:

request = Request(url_to_scrape, callback=self.parse_item)
    request.meta['language'] = "eng"
    yield request

然后你在这个例子中的parse_item中解析这个页面,你也可以向它发送元信息,正如你所看到的。

有这么多关于这个的帖子,你有没有试过查看相关的问题?@kishore我有试过。所有帖子都是特定于爬行的。所以,只有我发布了一个确切的例子,我需要一个解决方案。我已经利用了你的代码。我在Requesturl_to_scrape,callback=self.parse_项上出错,因为请求没有回调参数,所以我从scrapy.http导入请求导入并使用了它。现在我得到的错误,我已经更新了内容,请帮助。