Example #1
0
    def parse(self,response):
        # 这个跟node比 有个缺点是 node 就是异步的,而这里好像不是异步的,
        # 因此第一个主页面  将会在最后才能被保存
        self.savePath(response.url,response.body)
        # 这个路径是执行命令的位置的相对路径
        urls = response.css('a').extract()
        imgs = response.css('img').extract()
        for a in response.css('a'):

            if a.css('::attr(href)').extract() != None:
                item = BootcssItem()
                link=a.css('::attr(href)').extract()[0]
                item['title']=a.css('::attr(title)').extract()
                item['link']=link
                # print(item)
                if link not in self.crawled_urls:
                    self.crawled_urls.append(link)
                    if link.startswith('http'):
                        # 大部分是外部链接
                        pass
                    elif link.startswith('#'):
                        # 页面锚点
                        pass
                    else :
                        if link.endswith('.js'):
                            # js文件
                            pass
                        elif link.endswith('.css'):
                            # css文件
                            pass
                        else:
                            # 正常的页面链接
                            targetUrl=urljoin(response.url,link)
                            yield scrapy.Request(targetUrl, self.parse)
Example #2
0
 def saveImg(self,path,content):
     tempPath=path[len(self.start_urls[0]):]
     if os.path.splitext(tempPath)[1] == '':
         # 链接没有路径,restful 风格
         # 处理方式都转换成一个index.html
         path=urljoin(path,'index.html')
     else:
         pass
     path=path[7:]
     saveWebFile(path,content)
Example #3
0
 def handleA(self,url):
     if url.startswith('http'):
         # 完整路径
         pass
     elif url.startswith('#'):
         # 锚点
         return None
     else:
         # 绝对路径或者是相对路径
         url=urljoin(self.start_urls[0],url)
     return url