iT邦幫忙

0

Python Selenium 用於蝦皮購物找尋元素

  • 分享至 

  • xImage

請問使用Selenium應用於蝦皮找尋商品選項時,該如何持續偵測,未上架 (如圖反白,不能點選)的商品。

若發現未開賣的商品未上架時,就刷新頁面,再重新偵測,直到商品上架了,就自動點選該商品,然後再點擊購買。

我透過Selenium 八種定位方式,仍無法順利偵測,蝦皮的商品選項,都是用class命名,且命名方式相似,點選的商品選項又會不同。
目前測試結果都是,刷新介面後,就直接點選購買了,並沒有點選到我想要的商品選項,目標是想不停刷新介面,直到商品上架,就點選該商品選項,然後再點擊購買。
請各位大大幫幫解惑,自學Python所以不是很懂
以下部份Code

B = '//*[@id="main"]/div/div[2]/div[1]/div/div[2]/div/div[2]/div[3]/div/div[4]/div/div[3]/div/div[1]/div/button[1]'

while 1:
    try:
        buy1 = WebDriverWait(driver,1,0.4).until(EC.presence_of_all_elements_located((By.XPATH, B)))
        print('成功進入商品頁面')
        driver.find_element_by_xpath(B).click()
        print('點擊商品選項-完成')
        driver.find_element_by_xpath('//*[@id="main"]/div/div[2]/div[1]/div/div[2]/div/div[2]/div[3]/div/div[5]/div/div/button[2]').click()
        print('點擊直接購買-完成')
        break 
        
     except:
        print("還不能購買!刷新頁面")
        driver.refresh()

https://ithelp.ithome.com.tw/upload/images/20220531/20149469IzTpWmYs22.jpg

yun1231 iT邦新手 3 級 ‧ 2022-05-31 09:04:59 檢舉
這跟 python 沒啥關係ㄅ,然後你 code 這樣貼沒人會想看
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
bsexp301479
iT邦新手 3 級 ‧ 2022-05-31 12:06:46

Selenium API
看一下API文件吧
is_enabled() 回傳true再做下面點選然後送出的步驟

0
熊熊工程師
iT邦研究生 2 級 ‧ 2022-06-01 09:21:26

給兩個方向參考參考

  1. buy1 = WebDriverWait(driver,1,0.4).until(EC.presence_of_all_elements_located((By.XPATH, B))) 這行 1 秒的等待時間可能有點太少了,網頁載入需要比較多一點時間
  2. 經驗來說,有可能是你的 ip 被 ban 掉 or header 沒有修改而讓對方網站判定你是機器人,所以可以先修改看看 header 或使用 proxy ip 看看

以上前提是你的定位方式沒有錯

我要發表回答

立即登入回答