示例#1
0
 public static string GetDescription(this JobPortals val)
 {
     DescriptionAttribute[] attributes = (DescriptionAttribute[])val
                                         .GetType()
                                         .GetField(val.ToString())
                                         .GetCustomAttributes(typeof(DescriptionAttribute), false);
     return(attributes.Length > 0 ? attributes[0].Description : string.Empty);
 }
示例#2
0
        public void Do(JobPortals jobPortal, IUrlFilter filter)
        {
            Log.Information($"Scraping urls for: {jobPortal.GetDescription()}");
            var urls = ExtractPageUrls();

            filter.Apply(ref urls);

            UpdateUrls(urls);
        }
示例#3
0
        public IParser BuildParser(JobPortals website)
        {
            switch (website)
            {
            case JobPortals.CvOnline:
                return(new CvOnlineParser());

            default:
                throw new Exception("There is no parser for this website");
            }
        }
示例#4
0
        public IAnalyser BuildAnalyser(JobPortals website)
        {
            switch (website)
            {
            case JobPortals.CvOnline:
                return(new BaseAnalyser());

            case JobPortals.CvBankas:
                return(new BaseAnalyser());

            case JobPortals.CvLt:
                return(new BaseAnalyser());

            default:
                throw new Exception("There is no Analyser for this website");
            }
        }
示例#5
0
        public IScraper BuildScraper(JobPortals website)
        {
            switch (website)
            {
            case JobPortals.CvOnline:
                return(new CvOnlineScraper());

            case JobPortals.CvBankas:
                return(new CvBankasScraper());

            case JobPortals.CvLt:
                return(new CvLtScraper());

            default:
                throw new Exception("There is no Scraper for this website");
            }
        }
示例#6
0
        public void ProcessSalaries(JobPortals jobPortal)
        {
            Log.Information($"processing Salaries for {jobPortal.GetDescription()}");
            var jobUrls = _unitOfWork.JobUrlRepository.GetAll();

            var jobsWithSalaries = jobUrls.Where(j => !String.IsNullOrEmpty(j.SalaryText)).ToList();

            foreach (var jobUrl in jobsWithSalaries)
            {
                var salary = _analyser.GetSalary(jobUrl.SalaryText);

                salary.JObUrlId = jobUrl.Id;

                _unitOfWork.SalaryRepository.Upsert(salary, salary.Id);
                Log.Information($"Updating salary for: {jobPortal.GetDescription()}");
                _unitOfWork.SaveChanges();
            }
        }
示例#7
0
        public void ScrapePageInfos(string elementId, JobPortals jobPortal)
        {
            Log.Information($"Scraping page infos for {jobPortal.GetDescription()}");

            var jobPortalsUrls = _unitOfWork.JobUrlRepository.GetAll()
                                 .Where(j => j.JobPortalId == (int)jobPortal).ToList();

            foreach (var url in jobPortalsUrls)
            {
                var html = ScrapeJobHtml(url.Url, elementId);

                Log.Information($"Updating HtmlCode for Job Url {url.Id}");

                var jobInfo = new JobInfo()
                {
                    HtmlCode = html,
                    JobUrlId = url.Id
                };

                _unitOfWork.JobInfoRepository.Upsert(jobInfo, jobInfo.Id);
                _unitOfWork.SaveChanges();
            }
        }
示例#8
0
 public void Do(JobPortals jobPortal)
 {
     Log.Information($"Scraping urls for: {jobPortal.GetDescription()}");
     UpdateUrls(ExtractPageUrls());
 }
示例#9
0
 public void Do(JobPortals jobPortal)
 {
     this.ProcessSalaries(jobPortal);
 }
示例#10
0
 public void Do(JobPortals portalName)
 {
     this.ScrapePageInfos("jobad_content_main", JobPortals.CvBankas);
 }