Esempio n. 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
            {
                var eles_ung_vien = browser.Find("//div[@class='col-sm-9']//form//div[@class='list-group-item-heading']");
                if (eles_ung_vien.Count > 0)
                {
                    Dictionary <string, string> dic_cv_ung_vien = new Dictionary <string, string>();
                    foreach (var item_ung_vien in eles_ung_vien)
                    {
                        try
                        {
                            var ho_ten_ele  = browser.FindChildElement(item_ung_vien, ".//span[@class='text-accent']");
                            var link_cv_ele = browser.FindChildElement(item_ung_vien, ".//a");

                            if (ho_ten_ele != null && link_cv_ele != null)
                            {
                                string href   = browser.GetAttribute(link_cv_ele, "href").Trim();
                                string ho_ten = browser.GetAttribute(ho_ten_ele, "innerText").Trim();
                                if (!dic_cv_ung_vien.ContainsKey(href))
                                {
                                    dic_cv_ung_vien.Add(href, ho_ten);
                                }
                            }
                        }
                        catch (Exception)
                        {
                        }
                    }
                    foreach (var item in dic_cv_ung_vien)
                    {
                        browser.GoTo(item.Key);
                        UngVien ung_vien = new UngVien();
                        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    = item.Value;
                        ung_vien.full_text = browser.GetPageSource();
                        ung_vien.vi_tri    = job.ten_job;
                        ThongTinChungUngVien ttuv = new ThongTinChungUngVien();
                        ttuv.domain              = UrlToDomain(item.Key);
                        ttuv.full_text           = browser.GetInnerHtml("//div[@class='resume-show']//div[@class='media']", 200);
                        ttuv.full_text          += browser.GetInnerHtml("//div[@id='divResumeContactInformation']", 200);
                        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.GetInnerHtml("//h4[contains(text(),'Kinh nghiệm')]/following-sibling::dl", 200);
                        ung_vien.ky_nang       = "";
                        ung_vien.hoc_van       = browser.GetInnerHtml("//h4[contains(text(),'Học vấn')]/following-sibling::dl", 200);
                        ung_vien.email         = browser.GetInnerHtml("//a[contains(@href,'mailto')]", 200);
                        ung_vien.so_dien_thoai = browser.GetInnerHtml("//div[@id='divResumeContactInformation']//dt[contains(text(),'Điện')]/following-sibling::dd[1]", 200);
                        string ngay_sinh = browser.GetInnerText("//span[@class='confidential-birth-day']", 500);
                        ung_vien.domain    = UrlToDomain(item.Key);
                        ung_vien.custom_id = item.Key.Substring(item.Key.LastIndexOf("/") + 1);
                        ung_vien.nguoi_tao = job.nguoi_tao;
                        if (!string.IsNullOrEmpty(ngay_sinh))
                        {
                            //Convert ngay sinh
                            System.Globalization.DateTimeFormatInfo dtfi = new System.Globalization.DateTimeFormatInfo();
                            dtfi.ShortDatePattern = "dd/MM/yyyy";
                            dtfi.DateSeparator    = "/";
                            try
                            {
                                var bird_day = Convert.ToDateTime(ngay_sinh, dtfi);

                                ung_vien.ngay_sinh = XMedia.XUtil.TimeInEpoch(bird_day);
                            }
                            catch (Exception)
                            {
                            }
                        }
                        var ifr = browser.FindFirst("//iframe");
                        if (ifr != null)
                        {
                            ung_vien.link_cv_offline = browser.DownloadByBrowserInIFrame("//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}");
                            }
                        }

                        lst_ung_vien.Add(ung_vien);
                    }
                }
                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 = XMedia.XUtil.TimeInEpoch();
            return(lst_ung_vien);
        }