Chuyển tới nội dung chính

CoreLogic_Asia_RP_Data_Professional

Project: Ezy.Module.Selenium.Search.CoreLogic_Asia_RP_Data_Professional File 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 !IsDisableTypeSearch == SimpleSearch; lọc thêm theo ids nếu có.

CộtVai trò
NameĐịa chỉ / từ khóa nhập ô tìm kiếm
SearchByLoại tìm kiếm, dùng dựng tên field config (SearchBy, SearchBy_Search, SearchBy_Search_Button)
TextSearch_DataGhi 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ìm LoginButton, Username, Password, SendKeys, click.
  • Credential đọc từ file: Configs/CoreLogic_Asia_RP_Data_Professional/Account.json → class Account (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:

  1. Mở DB SOEZY_REPORT_DB, RefreshCache(), nạp textSearchs.
  2. Nạp dữ liệu hiện có (db.Get_CoreLogic_Asia_RP_Data()) → dictionary theo PropertyId.
  3. Mỗi textSearch: điều hướng loadSummary.htmlsetting.URLLogin(...).
  4. Quay lại loadSummary.html; chọn ô SearchBy, Clear() + SendKeys(Name), đọc gợi ý OptionSuggest.
  5. Lặp từ cuối danh sách gợi ý (tối đa NoOfDetailEachSearch): click suggest → SearchBy_Search_Button → đọc SearchResult, lấy propertyId = item.GetAttribute("key"), name = item.Text, click item.
  6. Lưu TextSearch_Data (join propertyId), cập nhật SearchStatus, SaveChanges().
  7. 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).