当前位置:   article > 正文

Python爬虫:浏览器模拟登录_通过浏览器模拟登录,使得爬虫程序具有爬取权限

通过浏览器模拟登录,使得爬虫程序具有爬取权限

浏览器模拟登录的主要技术点在于:

1.如何使用python的浏览器操作工具selenium

2.简单看一下网页,找到帐号密码对应的框框,要知道python开启的浏览器如何定位到这些

一、使用selenium打开网页

  1. '''
  2. 想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载!
  3. '''
  4. from selenium import webdriver
  5. url = 'https://passport.cnblogs.com/user/signin'
  6. driver = webdriver.Firefox()
  7. driver.get(url)

以上几句执行便可以打开博客园的登录界面,开启浏览器可能较慢,耐心等一下.

以前的selenium可以直接打开firefox,现在的需要安装geckodriver,自己百度下载一个对应自己浏览器的型号的.

 chrome一直都需要驱动,使用chrome的需要设置的可能麻烦一点.推荐看一下虫师的相关文章,个人觉得讲得不错,百度搜索出来还是比较靠前的.

二、找到帐号密码对应的页面元素

浏览器打开页面,点击f12,按上图步骤,找到了用户名的id"input1",同理找到密码的id,找到后发现是"input2".

三、将自己的用户名和密码填入selenium打开的浏览器

  使用find_element_by_id方法找到元素,再使用send_keys方法传入参数,最后使用click方法点击登录按钮即可.

成品代码有如下几句:

  1. # /usr/bin/python
  2. # encoding: utf-8
  3. '''
  4. 想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载!
  5. '''
  6. import time
  7. from selenium import webdriver
  8. def login(username, password):
  9. # url = 'https://passport.cnblogs.com/user/signin' # 使用这个url登录成功后定位到园子
  10. url = 'https://passport.cnblogs.com/user/signin?ReturnUrl=https%3A%2F%2Fwww.cnblogs.com%2F' # url中指明定位到博客园首页
  11. driver = webdriver.Firefox()
  12. driver.get(url)
  13. # print driver.title
  14. name_input = driver.find_element_by_id('input1') # 找到用户名的框框
  15. pass_input = driver.find_element_by_id('input2') # 找到输入密码的框框
  16. login_button = driver.find_element_by_id('signin') # 找到登录按钮
  17. name_input.clear()
  18. name_input.send_keys(username) # 填写用户名
  19. time.sleep(0.2)
  20. pass_input.clear()
  21. pass_input.send_keys(password) # 填写密码
  22. time.sleep(0.2)
  23. login_button.click() # 点击登录
  24. time.sleep(0.2)
  25. print driver.get_cookies()
  26. time.sleep(2)
  27. print driver.title
  28. driver.close()
  29. if __name__ == "__main__":
  30. user = "Masako"
  31. pw = "*****"
  32. login(user, pw)

 使用time模块sleep主要是为了控制操作速度,防止被认为是机器人,比较符合现实的情况应该随机sleep时间.

上述代码执行之后(注意将用户名密码换成自己的),可以看到打开了浏览器,并自动填写了帐号密码,自动点击登录,成功后跳转,然后自动关闭浏览器.

本地可以看到打印了一份cookie和一个标题"博客园 - 开发者的网上家园".

如果登录失败,打印的标题会是"用户登录 - 博客园".

如果报错,未打开浏览器,多半是没有安装geckodriver.

上述代码会打开浏览器界面,若不想看到界面,可采用以下手段:

  1. if __name__ == "__main__":
  2. from pyvirtualdisplay import Display
  3. display = Display(visible=0, size=(1366, 768))
  4. display.start()
  5. user = "Masako"
  6. pw = "*****"
  7. login(user, pw)
  8. display.stop()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/716155
推荐阅读
相关标签
  

闽ICP备14008679号