Python 用Selenium Data Scrape 28car.com data 一問

如題, 以下係我的python script , 我想去28car 根據我的喜好去選車,然後將個result set 變成dataframe 再用黎自己睇,係唔係做唔到的?唔知點解,我一search 禁完個'search' button, 佢就彈左去另一版(which is 如果人手search , 個網係會出到我想要的result,而唔係彈左另一頁,其實會唔會個網知道我用緊bot? ):

以下係我的code:
  1. import  ws_functions.config                 as ws_config
  2. import  ws_functions.cust_functions         as ws_functions
  3. import  time

  4. from selenium.webdriver.support.ui import Select

  5. Type  = "私家車"
  6. MANU  = "奧迪"
  7. Cc    = ""
  8. ATMT  = "自動波"
  9. Year  = "2011內"
  10. Price = ""

  11. model = "118i"


  12. url = "https://www.28car.com/"


  13. #browser = ws_functions.get_ChromeDriver(("--headless"))
  14. browser = ws_functions.get_ChromeDriver(())

  15. browser.implicitly_wait(10)
  16. browser.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'})
  17. browser.get(url)

  18. time.sleep(3)
  19. browser.switch_to_frame(browser.find_element_by_xpath('/html/frameset/frame'))
  20. time.sleep(2)

  21. browser.find_element_by_id('h_username').send_keys('login')
  22. time.sleep(0.5)
  23. browser.find_element_by_id('h_password').send_keys('password')
  24. time.sleep(0.5)
  25. browser.find_element_by_xpath('/html/body/table[1]/tbody/tr/td[2]/table/tbody/tr[1]/td/table[1]/tbody/tr/td[8]/input').click()

  26. time.sleep(2)


  27. browser.find_element_by_xpath('/html/body/table[3]/tbody/tr/td[2]/table/tbody/tr[1]/td/table/tbody/tr[1]/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[1]/a[1]/img').click()
  28. time.sleep(4)
  29. select = Select(browser.find_element_by_id('h_f_ty'))
  30. select.select_by_visible_text(Type)
  31. time.sleep(4)
  32. select = Select(browser.find_element_by_id('h_f_mk'))
  33. select.select_by_visible_text(MANU)
  34. time.sleep(4)
  35. select = Select(browser.find_element_by_id('h_f_tr'))
  36. select.select_by_visible_text(ATMT)
  37. time.sleep(4)
  38. select = Select(browser.find_element_by_id('h_f_yr'))
  39. select.select_by_visible_text(Year)
  40. time.sleep(4)
  41. ele = browser.find_element_by_id('h_srh').send_keys(model)
  42. time.sleep(5)

  43. browser.find_element_by_class_name('btn_c').click()
  44. time.sleep(4)

  45. browser.find_element_by_xpath('//*[@id="chromemenu"]/ul/li[1]/a').click()
  46. time.sleep(3)
複製代碼

如題, 以下係我的python script , 我想去28car 根據我的喜好去選車,然後將個result set 變成dataframe 再 ...
wood_0220 發表於 2021-7-30 21:50


唔知師兄點解要LOGIN,
直接用條LINK 就羅到RESULT

RESULT

如果要自己選不同型號就對返D 參數就OK
然後用BEAUTIFUL SOUP 攪惦, 唔洗用Selenium. 用Selenium  做會慢好多.
BOT 唔BOT, 其實睇你係唔係1 分鐘羅一次DATA, 我自己做果個RSS 就一分鐘羅一次DATA. 仲要係無HEADER 果隻
咁耐只係比一個SITE BAN 過. 之後改3 分鐘一次就無事.
其實好多大型SITE 只要你唔係幾秒一次羅DATA, 好多都唔會理你.

TOP

唔識 Python,但有D網站會 check 埋 Referer

TOP

唔識 Python,但有D網站會 check 埋 Referer
kong3883 發表於 2021-8-2 13:36


做個假REFFER 用乜易.

TOP

本帖最後由 kong3883 於 2021-8-2 13:50 編輯
做個假REFFER 用乜易.
Yucie 發表於 2021-8-2 13:38


我意思係,樓主個 request 只有 userAgent,試試加埋 REFFER=https://dj1jklak2e.28car.com
我用 PHP 撈 data,都試過樓主情況,但加左 REFFER 後可正常撈到 data
因為目標 web server check 係米自己友

我唔識 Python,但眕 OP code,好像是模擬緊 chrome 一些 event ? eg.click button ? 這樣做很容易出錯吧

TOP

我意思係,樓主個 request 只有 userAgent,試試加埋 REFFER=https://dj1jklak2e.28car.com
我用 PHP 撈  ...
kong3883 發表於 2021-8-2 13:47


佢個方法係用Selenium 呼叫CHROME 模擬點擊選項羅DATA
但係用來抓DATA 就真係好慢. 呼叫CHROME 就30秒左右, 打開網頁點擊抓DATA 又幾秒
最少要30秒先完成一次抓取DATA.

我果LINK 抓DATA 方法就2秒攪惦.
等於煮野食, 你可以用炭點火, 慢慢煮. 你又可以用天然氣點火煮.
效果一樣但效率差好遠

TOP

不如email 28car 睇下佢地有無提供public api 啦

TOP