作者utap2001 (寻找一个漫长的答案 )
看板Python
标题[心得] 用selenium爬网页时.click()失效的解法
时间Sat Jan 26 17:01:28 2019
最近在用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,他们好像都是用萤幕截图的方式,似乎没有办法
把资料存取出来存到变数里面
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.73.171.92
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1548493290.A.788.html
1F:推 rexyeah: 直接发req或看要call什麽func比较快,不用模拟click01/26 18:31
的确,req如果用的好,真的可以解决很多问题
不过有时候就是遇到很麻烦的状况,比如说像日期选单用req就很麻烦,有的网页查询,结束日都会固定是今天的日期,如果起始日也可以传一个固定参数,比如说固定结束日减一个月,那这样就好解很多
※ 编辑: utap2001 (114.44.89.16), 01/27/2019 01:42:08
2F:→ TakiDog: click 失败很大原因geckodriver,while true一下就解了 01/27 04:20
3F:→ TakiDog: ,用到模拟鼠键根本就可以把程式搬上脚本程式上了吧,re 01/27 04:20
4F:→ TakiDog: quests才是爬资料的真理 01/27 04:20
5F:推 froce: 可以用requests绝对不要用selenium,那稳定度完全不一样 01/31 14:33
6F:→ froce: 像我就常用selenium先想办法处理掉JS rending的问题,再抓 01/31 14:35
7F:→ froce: 到网址规律去做下载动作,宁愿登入2次。 01/31 14:36