机器都在持续学习
人怎么能停下脚步

使用selenium爬取58同城遇到的登录问题

最近需要在58同城上采集一些信息来做分析,决定使用selenium来进行爬虫。

但是在登录58同城的时候就遇到了问题,使用selenium无法获取到元素。后来看了58同城上面的HTML才发现原因。

使用selenium爬取58同城遇到的登录问题-机器在学习
58同城登录界面

58同城的登录地址:https://passport.58.com/login,我们看一下这一个区域对应的HTML吧。

使用selenium爬取58同城遇到的登录问题-机器在学习

用户名是很容易可以被selenium获取到的,但是密码却始终获取不到,仔细看了一下,密码输入栏对应的HTML总共有两条。

使用selenium爬取58同城遇到的登录问题-机器在学习

这里的两条对应的是啥意思呢?通过查找才发现,这个问题是前端做密码登录的时候经常会使用的一个技巧,第一个inputstyle=”display: inline-block;”,而第二个inputstyle=”display: none;”,实际上,这两个输入框叠加到了一起,我们看到的是第一个input框,而输入需要获取第2个input输入框才可以,只有在你点击了第一个input框,第二个input框才能个改变style的值为style=”display: inline-block;”,只有这样才可以被selenium获取到

那怎么搞?实际上有两个方法。

  1. 直接使用selenium获取第一个input,触发一次点击事件,第二个input框的状态会改变为style=”display: inline-block;”,之后就可以被selenium获取到啦
  2. 使用js,直接修改第二个inputstyle=”display: inline-block;”

方法一这里不阐述了

方法二需要执行以下代码:

js = "document.getElementById('passwordUser').style.display='block';"
driver.execute_script(js)

执行了这个操作后,就可以使用selenium获取到密码框啦!看一下执行了js后的效果吧!可以看到在下图中,密码框变成了两个,第二个才是有效的密码输入框。

使用selenium爬取58同城遇到的登录问题-机器在学习

看来爬虫工程师都应该是懂前端的,这个观点是一点都没错。

希望自己的经验可以变得越来越丰富~

赞(1)
转载请注明出处机器在学习 » 使用selenium爬取58同城遇到的登录问题
分享到: 更多 (0)

评论 2

  1. #-49

    fuck牛逼!!

    匿名4年前 (2020-04-03)回复
    • 强锅锅?

      monk4年前 (2020-04-07)回复