def pipeline(self,item): '''更改网页的链接,保存网页''' if item.url=='': return root_dir=settings.S_root_dir sub_dir=urlparse.urlparse(item.url)[2] ext=funcs.get_url_ext(item.url) #获取文件扩展名 item,file_path=self.update_file_path(item,root_dir,sub_dir) #wiki 的css页面为http://bits.wikimedia.org开头的php,不分析 #if (ext not in settings.S_img_ext) and (ext not in ('css','js')) and not item.url.startswith('http://bits.wikimedia.org'): if funcs.is_need_modify(item.url): #item=self.update_css_js(item) #print item.url item=self.modify_tree(item) if self.record(item): if self.check_dir_path(os.path.dirname(file_path)): if self.save_data(file_path,item): print 'pipleline: '+str(self.thread_id)+' : '+str(item.idx)+' : '+item.url else: print 'pipleline: '+str(self.thread_id)+' : no need to update '+str(item.idx)+' : '+item.url
def parse(self,response): '''分析网页内容''' response.url = response.url.strip() ext=funcs.get_url_ext(response.url) #获取文件扩展名 #wiki 的css页面为http://bits.wikimedia.org开头的php,不分析 #if (ext not in settings.S_img_ext) and (ext not in ('css','js')) and not response.url.startswith('http://bits.wikimedia.org'): if funcs.is_need_modify(response.url): data,coding=funcs.decode_data(response.body) soup=BeautifulSoup(str(data),'lxml',from_encoding='utf-8') soup,urls,css_urls,js_urls,img_urls=self.get_link(soup) all_urls=css_urls+js_urls+urls+img_urls for url in all_urls: vurl=funcs.valid_url(response.url,url).strip() #判断是否有效链接 if vurl != '': #下载简体中文的网页 vurl = funcs.translate_simplify( vurl ) _url=funcs.decode_data(vurl)[0].encode('utf-8') print _url if _url: vurl=_url yield Request(vurl) item=Item() item.url=response.url item.soup=soup item.content=str(soup) #使用修改后的数据 item.coding=coding #内容编码 item.file_length=int(len(response.body)) #原始文件大小 yield item else: item=Item() item.url=response.url item.soup=None item.content=response.body #使用修改后的数据 item.coding='' #内容编码 item.file_length=int(len(response.body)) #原始文件大小 yield item