def __init__(self): rs = ReadSetting() #读取各项参数 self.start_urls = rs.readurl() self.linkmatrix = LinkMatrix(rs.projectname()) self.linkmatrix.setroot(self.start_urls) self.allowed_domains = rs.readalloweddomain() self.xpath = rs.readxpath() self.rules = [Rule(LinkExtractor(), follow=True, callback="parse_start_url")] #设置爬取规则:follow所有url;Request通过spidermiddlewares过滤掉限定域外的url;生成的response传递给parse_start_url #所有Request均经过spidermiddlewares super(XpathSpider, self).__init__()
def __init__(self): rs = ReadSetting() #读取各项参数 self.start_urls = rs.readurl() self.linkmatrix = LinkMatrix(rs.projectname()) self.linkmatrix.setroot(self.start_urls) self.allowed_domains = rs.readalloweddomain() self.allow, self.deny = rs.readurlmatch() self.regex_allow = re.compile('({0})'.format('|'.join( [re.escape(e) for e in self.allow]))) #生成正则表达式 self.regex_deny = re.compile('({0})'.format('|'.join( [re.escape(e) for e in self.deny]))) self.rules = [ Rule(LinkExtractor(), follow=True, callback="parse_match") ] #设置爬取规则:follow所有url;Request通过spidermiddlewares过滤掉限定域外的url;生成的response传递给parse_match #所有Request均经过spidermiddlewares super(MatchSpider, self).__init__()
def __init__(self, projectname): self.projectname = projectname self.roots = [] rs = ReadSetting() self.allowed_domains = rs.readalloweddomain() #此三个字典通过合并duplicate_struct字典,覆盖反方向的链接(即链接两端均被记载,但只记录过单方向链接) self.entire_struct = dict( ) #保存网站所有的页面结构,referer、url在爬取范围(限制域)内,不一定符合抓取下载规则 self.forwardlinks = dict() #保存所有抓取下载范围内的页面的结构,referer、url符合抓取下载规则 self.outlinks = dict( ) #记录所有的外链,referer符合抓取下载规则,url在抓取下载范围外(包括爬取范围内外的页面) self.duplicate_struct = dict() #对于重复的request,记录对应的referer->url #此三个字典只覆盖了单方向链接(即已经过滤掉重复Request所对应的链接) self.entire_struct_0 = dict( ) #保存网站所有的页面结构,referer、url在爬取范围(限制域)内,不一定符合抓取下载规则 self.forwardlinks_0 = dict( ) #保存所有抓取下载范围内的页面的结构,referer不一定符合抓取下载规则,url符合抓取下载规则 self.outlinks_0 = dict( ) #记录所有的外链,referer不一定符合抓取下载规则(但在爬取范围内),url在爬取范围(限制域)外