[心得] 用selenium爬網頁時.click()失效的解法

作者: utap2001 (尋找一個漫長的答案 )   2019-01-26 17:01:28
最近在用selenium爬網頁,結果就碰到有一些網頁,.click()的方法沒有作用
有上網查到了一些解法,大概包括兩種,第一種就是不要用click,改用sendkey的方式se
ndkey,送出sendkey.ENTER或.RETURN
第二種方法就是用JavaScript的方式來點擊,execute_script(js)js
不過很可惜的,這兩種方法都沒效,你遇到的狀況可能遠比這些復雜,所以在我的情況,
我是怎麽解決網頁click方法失效的問題呢,我是換瀏覽器之後才解決的,本來是用chrome,後來用IE
我後來發現有些古董級的網站,他們的js真的要IE才能夠完全支援,所以有時候標簽失效
的問題,可能就是因為網站對瀏覽器的支援不夠,當然換IE之後也有新的麻煩,比如說設
定環境變數,要改很多設定等等,不過至少解決了元件失效的問題
雖然換IE驅動也是蠻麻煩的,可是這也是selenium的一種優勢,因為他所有的瀏覽器都
支援
另外一個解法就是下載pyautoGUI或是sikuli,直接模擬滑鼠去點擊,因為pyautogui或是
sikuli是屬於比較前端的工具,可以模擬滑鼠的行為
其他像是selenium或是pywinauto,swapy,是比較偏向後端的工具,我以前覺得後端的工
具比較好用,可是實際上也並不完全是這樣,兩種工具交錯著一起用,其實可以最大程度
解決你遇到的各種奇怪的問題
我想Python最近會變這麽紅,除了機器學習人工智慧之外,很大一部分應該也跟爬蟲,自
動化有關
還有順便問一下,python在WINDOWS視窗程式底下,如果想要截取視窗欄位裏面的資料,
有沒有像beautifulsoup一樣的套件?
因為我目前在用pyautogui或是sikuli,他們好像都是用螢幕截圖的方式,似乎沒有辦法
把資料存取出來存到變數裏面
作者: rexyeah (ccccccc)   2019-01-26 18:31:00
直接發req或看要call什麼func比較快,不用模擬click
作者: TakiDog (多奇狗)   2019-01-27 04:20:00
click 失敗很大原因geckodriver,while true一下就解了,用到模擬鼠鍵根本就可以把程式搬上腳本程式上了吧,requests才是爬資料的真理
作者: froce (froce)   2019-01-31 14:33:00
可以用requests絕對不要用selenium,那穩定度完全不一樣像我就常用selenium先想辦法處理掉JS rending的問題,再抓到網址規律去做下載動作,寧願登入2次。

Links booklink

Contact Us: admin [ a t ] ucptt.com