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