[心得] 用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