为使用Scrapy爬行网页实施不同类型的身份验证机制

问题描述

我写了一个抓抓的蜘蛛来抓取我作为start_urls传递的URL列表。

class PageScraper(scrapy.Spider):
name = 'pagescraper'

def __init__(self,args):
    dispatcher.connect(self.spider_closed,signals.spider_closed)
    self.start_urls = args.get('start_urls',[])
    super(PageScraper,self).__init__()


def start_requests(self):
    for url in self.start_urls:
        yield scrapy.Request(url)


def parse(self,response):
    try:
        response_headers = response.headers.to_unicode_dict()
        content_type = response_headers.get('content-type','')
        if "text/html" in content_type:
            # yield something from the web page content
    except Exception:
        debug_logger.error(traceback.format_exc())

def spider_closed(self,spider):
    spider.logger.info('Spider closed: %s',spider.name)

现在存在一个要求,即搜寻器需要搜寻登录页面后面的页面。我需要处理具有不同身份验证类型的页面,例如基本HTTP,摘要,NLTM,表单。我浏览了草率的文档和许多StackOverflow链接,发现基本的HTTP身份验证和基于表单的身份验证都是可行的。对于基本的HTTP和基于表单的身份验证,我找到了有用的资源和实现。但是对于剩余的类型,由于我对身份验证过程的了解甚少,因此我很难找到一种方法或现有的实现方式,而且工作很艰难。

找到资源-

  1. 基本HTTP身份验证-scrappy docs link
  2. 基于表单的身份验证-Using loginform with scrapy

我经历了具有NTLM和摘要身份验证支持的请求包,但是由于scrapy正在使用其自己的Request类来进行请求调用,因此无法弄清楚如何将其集成到我现有的逻辑中。

有没有办法使用scrapy来实现其他两种身份验证机制,还是有办法在scrapy爬虫和抓取页面中集成第三方逻辑(请求auth)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)