lstdate = find_tags(driver, dic_tag['review_date']) # 取得目前載入的評論數目 if loading_count - record_time >= 30: # 目前loading次數 與 紀錄loading次數 相差 30次以上就更新紀錄 if len(lstdate) > record_date_count: # 目前載入的評論數 > 紀錄的評論數-->就更新紀錄的評論數 print('原本紀錄的loading次數:', record_time, ',更新為:', loading_count) print('原本紀錄的評論數:',record_date_count, ',更新為:', len(lstdate)) record_date_count = len(lstdate) record_time = loading_count else: print('無法載入新的評論,Chrome 掛掉了,放棄載入新的評論', name) bError = True # 正常來說,每下滑一次就會取得新的評論, bfinal = True # 所以每下滑30次檢查一次,目前載入的評論數目會 > 已記錄的評論數才對 break # 若沒大於,代表它一直往下滑,但卻沒有載入新的評論數-->瀏覽器掛掉了 loading_date = lstdate[-1].text print('saved_latest_date:',saved_latest_date, 'loading_date:', get_real_date(loading_date),', len(loading):' ,len(loading), loading[-1].is_displayed()) # if '年' in loading_date and int(loading_date.split(' ')[0]) > 4: # print('目前最後一個評論已超過五年,不需再往下滑了') # break if saved_latest_date != '' and get_real_date(loading_date) < saved_latest_date: print('目前最後一個評論日期', get_real_date(loading_date), '已 < 最新儲存日期:', saved_latest_date, ',不需再往下滑了') break elif len(loading) == 0: print('沒有section-loading了,停止往下滑') break if not loading[-1].is_displayed(): # 若元素沒有出現在畫面上,但仍要對它做動作,會出現錯誤"element not interactable” print('loading[-1]還沒出現,等2秒') time.sleep(2) if not loading[-1].is_displayed(): print('loading[-1]沒有顯示,放棄載入新的評論', name) break
# print(msg) logger.info(msg) record_date_count = len( lstdate) record_time = loading_count else: msg = '無法載入新的評論,Chrome 掛掉了,放棄載入新的評論 ' + name # print(msg) logger.error(msg) bError = True # 正常來說,每下滑一次就會取得新的評論, bfinal = True # 所以每下滑20次檢查一次,目前載入的評論數目會 > 已記錄的評論數才對 break # 若沒大於,代表它一直往下滑,但卻沒有載入新的評論數-->瀏覽器掛掉了 loading_date = lstdate[-1].text msg = '最新已儲存日期:' + saved_latest_date + ', 目前此筆評論日期:' + get_real_date( loading_date ) + ', loading displayed:' + str( loading[-1].is_displayed()) # print(msg) logger.info(msg) if saved_latest_date != '' and get_real_date( loading_date ) < saved_latest_date: msg = '目前最後一個評論日期:' + get_real_date( loading_date ) + '已 < 最新儲存日期:' + saved_latest_date + ',不需再往下滑了' # print(msg) logger.info(msg) break elif len(loading) == 0: