コード例 #1
0
        private List <UngVien> XuLyCV(XBrowser browser, JobLink job)
        {
            job.trang_thai_xu_ly = TrangThaiXuLy.DA_XU_LY;

            List <UngVien> lst_ung_vien = new List <UngVien>();

            try
            {
                UngVien ung_vien = new UngVien();
                ung_vien.ngay_tao = ung_vien.ngay_sua = XUtil.TimeInEpoch(DateTime.Now);
                ung_vien.app_id   = job.app_id;
                ung_vien.job_link = job.link;
                ung_vien.vi_tri   = job.ten_job;

                ThongTinChungUngVien ttuv = new ThongTinChungUngVien();
                ttuv.domain = "https://careerbuilder.vn/";
                //ttuv.full_text = block_ung_vien.FindElement(By.XPath("//div[@class='Card__root ApplicationCard__root']")).;
                ung_vien.thong_tin_chung = ttuv;
                ung_vien.ho_ten          = browser.GetInnerText(".//div[@class='act_more']/a/b", 200);
                ung_vien.link_cv_online  = "";
                ung_vien.ky_nang         = "";
                ung_vien.hoc_van         = browser.GetInnerText(".//ul[@class='block_info bullet block01']/li[2]/div");

                //div[@class='info-list']/ul/li[1]
                ung_vien.ngay_sinh     = 0;
                ung_vien.so_dien_thoai = browser.GetInnerText(".//ul[@class='block_info block02']/li[1]/div");
                ung_vien.email         = browser.GetInnerText(".//ul[@class='block_info block02']/li[2]/div");
                ung_vien.dia_chi       = browser.GetInnerText(".//ul[@class='block_info block02']/li[3]/div");

                Uri uri = new Uri(job.link);
                ung_vien.domain = uri.Host;
                var id = string.Join("/", job.link.Split('/').Skip(5));
                //id = id.Substring(0, id.LastIndexOf('/'));
                ung_vien.custom_id = id;
                //Tai file
                var ifr = browser.FindFirst("//div[@id='tabs-chitiethoso']//iframe");
                if (ifr != null)
                {
                    ung_vien.link_cv_offline = browser.DownloadByBrowserInIFrame("//div[@id='tabs-chitiethoso']//iframe", "//button[@id='download']");
                    if (!string.IsNullOrEmpty(ung_vien.link_cv_offline))
                    {
                        ung_vien.cv_byte = File.ReadAllBytes($"{cv_save_path}\\{ung_vien.link_cv_offline}");
                    }
                }
                ung_vien.full_text = browser.GetPageSource();
                ung_vien.nguoi_tao = job.nguoi_tao;
                lst_ung_vien.Add(ung_vien);
                var count = lst_ung_vien.Count;
                System.Threading.Thread.Sleep(2000);
            }
            catch (Exception ex)
            {
                job.trang_thai_xu_ly = TrangThaiXuLy.LOI;
                job.thong_tin_xu_ly  = ex.Message;
            }
            job.ngay_xu_ly = XUtil.TimeInEpoch();

            return(lst_ung_vien);
        }
コード例 #2
0
ファイル: JobLink.cs プロジェクト: hvtienfithou997/Tool
 public JobLink(LoaiLink _loai)
 {
     link     = "";
     tieu_de  = "";
     json     = "";
     loai     = _loai;
     ngay_sua = ngay_tao = XUtil.TimeInEpoch();
     if (_loai == LoaiLink.JOB_LINK)
     {
         json = null;
     }
 }
コード例 #3
0
        public List <UngVien> Run(CauHinh ch, List <JobLink> lst_job_link, ToolStripStatusLabel toolStripStatusLabel1)
        {
            is_authenticated = false;
            List <UngVien> lst_ung_vien = new List <UngVien>();
            string         wait_xpath   = ".//li[@class='dropdown dropdown-user']";

            using (var browser = new XBrowser(user_profile_path, cv_save_path, string.Empty, false, show_browser))
            {
                foreach (var job in lst_job_link)
                {
                    string url = browser.GoTo(job.link);
                    is_authenticated = url.Contains(ch.url_login) ? browser.Login(ch.url_login, ch.username, ch.password, ch.xpath_username, ch.xpath_password, out string msg, wait_xpath, false) : browser.GetUrl().Contains(url);
                    if (is_authenticated)
                    {
                        //string r_url = browser.GoTo(job.link);
                        System.Threading.Thread.Sleep(1000);
                        browser.FindAndClick(".//a[@href='#tab2']");

                        var ung_vien      = browser.Find(".//tbody[@id='applied']//strong/a");
                        var url_detail_uv = new List <string>();
                        foreach (var uv in ung_vien)
                        {
                            var link_uv = browser.GetAttribute(uv, "href");
                            url_detail_uv.Add(link_uv);
                        }

                        if (url_detail_uv.Count > 0)
                        {
                            foreach (var u_v in url_detail_uv)
                            {
                                browser.GoTo(u_v);
                                toolStripStatusLabel1.Text = $"Đang xử lý link:{job.link}";
                                var lst_cv_by_job = XuLyCV(browser, job);
                                lst_ung_vien.AddRange(lst_cv_by_job);
                            }
                        }
                        else
                        {
                            job.trang_thai_xu_ly       = TrangThaiXuLy.DA_XU_LY;
                            job.ngay_xu_ly             = XUtil.TimeInEpoch();
                            toolStripStatusLabel1.Text = $"Không tìm thấy ứng viên link:{job.link}";
                        }
                        job.tong_so_cv = url_detail_uv.Count;
                        ES.JobLinkRepository.Instance.UpdateTrangThaiXuLy(job);
                    }
                }
            }

            return(new List <UngVien>(lst_ung_vien));
        }
コード例 #4
0
        public List <UngVien> XuLyCV(XBrowser browser, JobLink job, string url_ung_vien)
        {
            job.trang_thai_xu_ly = TrangThaiXuLy.DA_XU_LY;

            List <UngVien> lst_ung_vien = new List <UngVien>();

            try
            {
                //var eles_ung_vien = browser.Find("//table[@class='el-table__body']//tbody//div/div/div[1]/a");
                //if (eles_ung_vien.Count <= 0)
                //{
                //    job.thong_tin_xu_ly = Common.KHONG_TIM_THAY_UNG_VIEN;
                //}

                try
                {
                    UngVien ung_vien = new UngVien();
                    ung_vien.vi_tri         = job.ten_job;
                    ung_vien.ngay_tao       = ung_vien.ngay_sua = XMedia.XUtil.TimeInEpoch();
                    ung_vien.app_id         = job.app_id;
                    ung_vien.job_link       = job.link;
                    ung_vien.ho_ten         = browser.GetInnerText("//div[@class='panel-body']//h5/span", 2000);
                    ung_vien.link_cv_online = browser.GetAttribute("//div[@class='panel-footer']//div[@class='pull-right']//a", "href");
                    ThongTinChungUngVien ttuv = new ThongTinChungUngVien();
                    ttuv.domain = "mywork.com";
                    ung_vien.thong_tin_chung = ttuv;
                    //Bóc tách XPATH để lấy được thông tin này nếu có
                    ung_vien.kinh_nghiem   = browser.GetInnerText("//div[@class='list-item']");
                    ung_vien.ky_nang       = browser.GetInnerText("//div[@class='panel-body']/div[7]");
                    ung_vien.so_dien_thoai = browser.GetInnerText("//div[@class='info']//div/div[2]/p[2]/span");
                    ung_vien.email         = browser.GetInnerText("//div[@class='info']//div[2]/p[1]/a");
                    Uri uri = new Uri(url_ung_vien);
                    ung_vien.domain    = uri.Host;
                    ung_vien.custom_id = url_ung_vien.Split('/').Last();
                    ung_vien.hoc_van   = "";
                    ung_vien.ngay_sinh = 0;
                    //Tai file
                    var cv_byte = browser.DownloadFile(ung_vien.link_cv_online, out string cv_file_name);
                    if (cv_byte != null)
                    {
                        ung_vien.cv_byte = cv_byte;
                        WriteFile($"{cv_save_path}\\{cv_file_name}", cv_byte);
                        ung_vien.link_cv_offline = cv_file_name;
                    }

                    ung_vien.full_text = browser.GetPageSource();
                    ung_vien.nguoi_tao = job.nguoi_tao;
                    lst_ung_vien.Add(ung_vien);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
            catch (Exception ex)
            {
                job.trang_thai_xu_ly = TrangThaiXuLy.LOI;
                job.thong_tin_xu_ly  = ex.Message;
            }
            job.ngay_xu_ly = XUtil.TimeInEpoch();
            return(lst_ung_vien);
        }
コード例 #5
0
        private List <UngVien> XuLyCV(XBrowser browser, JobLink job)
        {
            job.trang_thai_xu_ly = TrangThaiXuLy.DA_XU_LY;

            List <UngVien> lst_ung_vien = new List <UngVien>();

            try
            {
                var eles_ung_vien = browser.Find("//div[@class='table-responsive']/table//td[2]/a");
                if (eles_ung_vien.Count > 0)
                {
                    foreach (var item_ung_vien in eles_ung_vien)
                    {
                        try
                        {
                            browser.Click(item_ung_vien);
                            UngVien ung_vien = new UngVien();
                            ung_vien.vi_tri         = job.ten_job;
                            ung_vien.ngay_tao       = ung_vien.ngay_sua = XMedia.XUtil.TimeInEpoch();
                            ung_vien.app_id         = job.app_id;
                            ung_vien.job_link       = job.link;
                            ung_vien.ho_ten         = browser.GetInnerText("//div[@id='action-box']//tr[1]//td[1]", 2000);
                            ung_vien.link_cv_online = browser.GetAttribute("//a[@id='btn-download-candidate']", "href");
                            ThongTinChungUngVien ttuv = new ThongTinChungUngVien();
                            ttuv.domain              = "topcv.vn";
                            ttuv.full_text           = browser.GetInnerHtml("//div[@id='action-box']/table");
                            ung_vien.thong_tin_chung = ttuv;
                            //Bóc tách XPATH để lấy được thông tin này nếu có
                            ung_vien.kinh_nghiem = browser.GetInnerText("//div[@class='info']//div/div[1]/p[3]/strong");
                            ung_vien.ky_nang     = "";
                            ung_vien.hoc_van     = "";
                            ung_vien.ngay_sinh   = 0;
                            //Tai file

                            var cv_byte = browser.DownloadFile(ung_vien.link_cv_online, out string cv_file_name);
                            if (cv_byte != null)
                            {
                                ung_vien.cv_byte = cv_byte;
                                WriteFile($"{cv_save_path}\\{cv_file_name}", cv_byte);
                                ung_vien.link_cv_offline = cv_file_name;
                            }
                            ung_vien.full_text = browser.GetPageSource();
                            ung_vien.nguoi_tao = job.nguoi_tao;
                            lst_ung_vien.Add(ung_vien);
                            browser.FindAndClick("//div[@title='Đóng lại']");
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
                else
                {
                    job.thong_tin_xu_ly = Common.KHONG_TIM_THAY_UNG_VIEN;
                }
            }
            catch (Exception ex)
            {
                job.trang_thai_xu_ly = TrangThaiXuLy.LOI;
                job.thong_tin_xu_ly  = ex.Message;
            }
            job.ngay_xu_ly = XUtil.TimeInEpoch();
            return(lst_ung_vien);
        }
コード例 #6
0
 public LinkSaved()
 {
     ngay_tao = XUtil.TimeInEpoch(DateTime.Now);
     ngay_sua = XUtil.TimeInEpoch(DateTime.Now);
 }
コード例 #7
0
        private List <UngVien> XuLyCV(XBrowser browser, JobLink job)
        {
            job.trang_thai_xu_ly = TrangThaiXuLy.DA_XU_LY;

            List <UngVien> lst_ung_vien = new List <UngVien>();

            try
            {
                UngVien ung_vien = new UngVien();

                ung_vien.ngay_tao = ung_vien.ngay_sua = XUtil.TimeInEpoch(DateTime.Now);
                ung_vien.app_id   = job.app_id;
                ung_vien.job_link = job.link;
                ung_vien.vi_tri   = job.ten_job;

                ThongTinChungUngVien ttuv = new ThongTinChungUngVien();
                ttuv.domain = "jobsgo.vn";
                //ttuv.full_text = block_ung_vien.FindElement(By.XPath("//div[@class='Card__root ApplicationCard__root']")).;
                ung_vien.thong_tin_chung = ttuv;
                ung_vien.ho_ten          = browser.GetInnerText(".//div[@title='Họ tên ứng viên']", 200);
                ung_vien.link_cv_online  = browser.GetAttribute("//div[@class='lnks']/a[@class='btn-download-cv lnk cv']", "href");
                ung_vien.ky_nang         = browser.GetInnerText("//div[@class='skills-list']");
                ung_vien.hoc_van         = browser.GetInnerText("//div[@class='resume-items']//div[@class='name']");

                //div[@class='info-list']/ul/li[1]
                ung_vien.ngay_sinh     = 0;
                ung_vien.so_dien_thoai = browser.GetInnerText("//div[@class='info-list']/ul/li[3]/span[@class='tel']");
                ung_vien.email         = browser.GetInnerText("//div[@class='info-list']/ul/li[4]/span[@class='email']");
                ung_vien.dia_chi       = browser.GetInnerText("//div[@class='info-list']/ul/li[5]/span[@class='address']");

                Uri uri = new Uri(job.link);
                ung_vien.domain = uri.Host;
                var id = string.Join("/", job.link.Split('/').Skip(5));
                //id = id.Substring(0, id.LastIndexOf('/'));
                ung_vien.custom_id = id;
                //Tai file
                //javascript:void(0)

                var link_cv = browser.GetAttribute("//div[@class='lnks']/a[@class='btn-download-cv lnk cv']", "href");

                if (link_cv.Contains("javascript:void(0)"))
                {
                    System.Threading.Thread.Sleep(2500);
                    link_cv = browser.GetAttribute("//div[@class='lnks']/a[@class='btn-download-cv lnk cv']", "href");
                    ung_vien.link_cv_online = link_cv;
                }
                else
                {
                    System.Threading.Thread.Sleep(2500);
                    ung_vien.link_cv_online = link_cv;
                }

                var cv_byte = browser.DownloadFile(ung_vien.link_cv_online, out string cv_file_name);
                if (cv_byte != null)
                {
                    ung_vien.cv_byte = cv_byte;
                    WriteFile($"{cv_save_path}\\{cv_file_name}", cv_byte);
                    ung_vien.link_cv_offline = cv_file_name;
                }
                ung_vien.full_text = browser.GetPageSource();
                ung_vien.nguoi_tao = job.nguoi_tao;
                lst_ung_vien.Add(ung_vien);
                var count = lst_ung_vien.Count;
                System.Threading.Thread.Sleep(2000);
            }
            catch (Exception ex)
            {
                job.trang_thai_xu_ly = TrangThaiXuLy.LOI;
                job.thong_tin_xu_ly  = ex.Message;
            }
            job.ngay_xu_ly = XUtil.TimeInEpoch();

            return(lst_ung_vien);
        }
コード例 #8
0
        private List <UngVien> XuLyCV(XBrowser browser, JobLink job)
        {
            job.trang_thai_xu_ly = TrangThaiXuLy.DA_XU_LY;

            List <UngVien> lst_ung_vien = new List <UngVien>();

            try
            {
                var           eles_ung_vien      = browser.Find("//div[@class='Card__root ApplicationCard__root']");
                List <string> lst_block_ung_vien = new List <string>();
                if (eles_ung_vien.Count > 0)
                {
                    foreach (var block_ung_vien in eles_ung_vien)
                    {
                        try
                        {
                            UngVien ung_vien = new UngVien();

                            ung_vien.ngay_tao = ung_vien.ngay_sua = XUtil.TimeInEpoch(DateTime.Now);
                            ung_vien.app_id   = job.app_id;
                            ung_vien.job_link = job.link;
                            ung_vien.vi_tri   = job.ten_job;
                            try
                            {
                                ung_vien.ho_ten = block_ung_vien.FindElement(By.ClassName("ApplicationCard__name")).Text;
                            }
                            catch (Exception)
                            {
                                ung_vien.ho_ten = "";
                            }

                            try
                            {
                                browser.FindFirst(".//div[@class='CardCopy__regularSpacing CardCopy__extraTopMargin']/a").Click();
                                System.Threading.Thread.Sleep(1500);
                                ung_vien.link_cv_online = block_ung_vien.FindElement(By.XPath(".//iframe[@class='DownloadResume__downloadFrame']")).GetAttribute("src");
                            }
                            catch (Exception)
                            {
                            }
                            ThongTinChungUngVien ttuv = new ThongTinChungUngVien();
                            ttuv.domain = "jobstreet.vn";
                            //ttuv.full_text = block_ung_vien.FindElement(By.XPath("//div[@class='Card__root ApplicationCard__root']")).;
                            ung_vien.thong_tin_chung = ttuv;

                            //Bóc tách XPATH để lấy được thông tin này nếu có

                            var is_exist_email = browser.FindFirst(".//div[@class='ApplicationCard__revealEmailAddress']/span/a");
                            var is_exist_phone = browser.FindFirst(".//div[@class='ApplicationCard__revealPhoneNumber']/span/a");

                            if ((is_exist_email != null && is_exist_email.Displayed == true) || (is_exist_phone != null && is_exist_phone.Displayed == true))
                            {
                                if (is_exist_email != null)
                                {
                                    is_exist_email.Click();
                                    System.Threading.Thread.Sleep(300);
                                    var element_email = block_ung_vien.FindElement(By.XPath(".//div[@class='ApplicationCard__revealEmailAddress']/a"));
                                    if (element_email != null && element_email.Displayed == true)
                                    {
                                        ung_vien.email = block_ung_vien.FindElement(By.XPath(".//div[@class='ApplicationCard__revealEmailAddress']/a")).Text;
                                    }
                                }
                                if (is_exist_phone != null)
                                {
                                    is_exist_phone.Click();
                                    System.Threading.Thread.Sleep(300);
                                    var element_phone = browser.FindFirst(".//div[@class='ApplicationCard__revealPhoneNumber']/span/a");

                                    if (element_phone != null && element_phone.Displayed == true)
                                    {
                                        ung_vien.so_dien_thoai = block_ung_vien.FindElement(By.XPath("//div[@class='ApplicationCard__revealPhoneNumber']")).Text;
                                    }
                                }
                            }
                            ung_vien.ky_nang   = "";
                            ung_vien.hoc_van   = "";
                            ung_vien.ngay_sinh = 0;
                            Uri uri = new Uri(job.link);
                            ung_vien.domain = uri.Host;
                            var id = string.Join("/", job.link.Split('/').Skip(5));
                            id = id.Substring(0, id.LastIndexOf('/'));
                            ung_vien.custom_id = id;
                            //Tai file
                            //browser.DownloadByBrowser(block_ung_vien.FindElement(By.XPath(".//div[@class='CardCopy__regularSpacing CardCopy__extraTopMargin']/a")));
                            var cv_byte = browser.DownloadFile(ung_vien.link_cv_online, out string cv_file_name);
                            if (cv_byte != null)
                            {
                                ung_vien.cv_byte = cv_byte;
                                WriteFile($"{cv_save_path}\\{cv_file_name}", cv_byte);
                                ung_vien.link_cv_offline = cv_file_name;
                            }
                            ung_vien.full_text = browser.GetPageSource();
                            ung_vien.nguoi_tao = job.nguoi_tao;
                            lst_ung_vien.Add(ung_vien);
                            var count = lst_ung_vien.Count;
                            //browser.FindAndClick("//div[@title='Đóng lại']");
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex);
                        }
                    }
                }
                else
                {
                    job.thong_tin_xu_ly = Common.KHONG_TIM_THAY_UNG_VIEN;
                }
            }
            catch (Exception ex)
            {
                job.trang_thai_xu_ly = TrangThaiXuLy.LOI;
                job.thong_tin_xu_ly  = ex.Message;
            }
            job.ngay_xu_ly = XUtil.TimeInEpoch();

            return(lst_ung_vien);
        }