看板 Python 關於我們 聯絡資訊
with open("Mi_authorised_stores.txt",'a',encoding='utf8') as file: for i in range(1,817): try: myElem = ... (...) driver.find_element_by_css_selector('a.next').click() except: print(i) 為什麼你的click不是在myElem上? 而是要再找一次? 另外,其實按下每次換頁時request的網址是有規則的 page1: https://store.mi.com/in/authorizedstore/getdata?jsonpcallback=authorized& pageSize=8&pageNum=1&city=All%20cities&state=All%20states&_=1550582078453 雖然我沒有去測試,但可以看到它是pageNum=1, 同理也可以看到pageNum=2 ... devtool上看response也是json的格式。也許可以試試看直接request就好。 ※ 引述《liquidbox (樹枝擺擺)》之銘言: : 想請教一些問題,我想用Selenium抓小米官網的經銷商, : 希望抓完後,用裡頭的資料做成地圖 : 爬取過程中卻不時出現StaleElementReferenceException,出現頁數不定, : 快的話第2頁出現,幸運的話40、50頁後出現, : 我猜可能是元素載入不完全,於是想等「下一頁」元素可以點選後再執行後面的動作, : 甚至我把WebDriverWait的delay值設為200 : 問題一:我設的WebDriverWait().until()似乎沒有發揮作用 : 我以例外處理方式把無法正常爬取的頁數print出來, : 這個例外處理很粗糙,但如果不使用例外處理, : 程式只要遇到StaleElementReferenceException就會中斷, : 而我發現,我print出來的無法正常處理的頁數有數百頁 : 實際用Excel分析重複筆數後發現, : 我抓到的很多變數address根本重複,甚至可以重複數十筆 : 問題二:我搞不太懂哪個動作讓我抓到了重複的資料 : 難道是頁面未更新、導致定位出來的元素仍是上個網頁的資料嗎? : 還是說我遇到反爬了? : 這整個程式我自己覺得好像沒什麼問題,但過程中還蠻跌跌撞撞的 : 因為我的程式碼會超過批踢踢的畫面長度,造成閱讀不便跟理解困難 : 所以我放在雲端連結,若這樣做反而讓大家更不方便在此道歉 : https://1drv.ms/t/s!AuQERVaW1DVCgv8sqCcfl9FkaayNGg -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.202.158 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1550583618.A.949.html
liquidbox: 好的,我試看看,謝謝說明 02/20 12:01