CoreLogic_Asia_RP_Data_Professional
Project:
Ezy.Module.Selenium.Search.CoreLogic_Asia_RP_Data_ProfessionalFile chính:CoreLogic_Asia_RP_Data.cs
Tra cứu bất động sản trên RP Data (rpp.rpdata.com). Khác với CoreLogic: module này dùng Selenium ChromeDriver + form login từ file, không dùng OAuth/AutoLoad.
Nguồn
- Trang search:
rpp.rpdata.com/rpp/loadSummary.html?q=&qt=addressl&view=property&newSearch=true&searchWindowId=. - Trang login:
setting.URL.
Input
Đọc qua db.Get_TextSearch_CoreLogic_Asia_RP() (entity TextSearch_CoreLogic_Asia_RP), lọc !IsDisable và TypeSearch == SimpleSearch; lọc thêm theo ids nếu có.
| Cột | Vai trò |
|---|---|
Name | Địa chỉ / từ khóa nhập ô tìm kiếm |
SearchBy | Loại tìm kiếm, dùng dựng tên field config (SearchBy, SearchBy_Search, SearchBy_Search_Button) |
TextSearch_Data | Ghi danh sách propertyId tìm được (nối ;) |
Giới hạn số kết quả: setting.NoOfDetailEachSearch. Bộ chọn UI từ moreSettings (SettingName TextSearch_Data_CoreLogic_Asia_RP).
Login
- Form login Selenium (
Login(searchConfigs)): tìmLoginButton,Username,Password,SendKeys, click. - Credential đọc từ file:
Configs/CoreLogic_Asia_RP_Data_Professional/Account.json→ classAccount(Username/Password). - Sau click vẫn còn
LoginButton→ throw"Login fail"; thiếu file →"No login account found".
Các bước scrape
StartSearchAndDownload:
- Mở DB
SOEZY_REPORT_DB,RefreshCache(), nạptextSearchs. - Nạp dữ liệu hiện có (
db.Get_CoreLogic_Asia_RP_Data()) → dictionary theoPropertyId. - Mỗi
textSearch: điều hướngloadSummary.html→setting.URL→Login(...). - Quay lại
loadSummary.html; chọn ôSearchBy,Clear()+SendKeys(Name), đọc gợi ýOptionSuggest. - Lặp từ cuối danh sách gợi ý (tối đa
NoOfDetailEachSearch): click suggest →SearchBy_Search_Button→ đọcSearchResult, lấypropertyId = item.GetAttribute("key"),name = item.Text, click item. - Lưu
TextSearch_Data(join propertyId), cập nhậtSearchStatus,SaveChanges(). - Gọi
GetDataFromWebsite(propertyId, ...)rồi quay lại tiếp tục.
Output
Entity TextSearch_Data_CoreLogic_Asia_RP. Key fields: PropertyId, Name, các cột JSON (PropertyAttributesJson, LastSaleDetailsJson, LegalDescriptionJson…), đường dẫn ảnh screenshot, PropertyMainPhotosJson, PDFName.
:::warning Trích xuất chi tiết đang bị TẮT
Toàn bộ thân GetDataFromWebsite bị comment-out (block /* ... */), hiện chỉ return string.Empty. Logic đã vô hiệu gồm: tải PDF, parse Get_PropertyAttributes / Get_LastSaleDetails / Get_LegalDescription, và screenshot các vùng (PropertyAttributes, LastSaleDetails, LegalDescription, SuburbSnapshot, LandValues, Ownership, PropertyFeatures, SalesHistory, ForSale_*, ForRent). Thực tế hiện chỉ propertyId được lưu vào TextSearch_CoreLogic_Asia_RP.TextSearch_Data.
:::
Lỗi / edge cases
- Login thất bại → throw, bị bắt ở ngoài, set
SearchStatus = "Search Fail At...". - Không có gợi ý →
"Search not exist". - Chưa chọn
SearchBy→"Search By was not selected". - Không có dữ liệu tìm kiếm →
Log_Exception("Search data not found"). - Mỗi item ghi
"Search Done At Item {n}"/"Search At Item {n} Fail". - Nhiều
Thread.Sleep(5000)cố định thay cho explicit wait; không retry ở tầng này.
Trạng thái: search active, trích xuất data tắt (commented).