Exemplo n.º 1
0
    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__()
Exemplo n.º 2
0
    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__()
Exemplo n.º 3
0
    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在爬取范围(限制域)外