网络爬虫学习中,简单的静态页面数据,难以满足我们的一颗“好学”之心,且现在我们“好奇”的数据往往藏得很深,要么需要登录,要么为动态加载……今天,就来分享一下模拟浏览器对QQ邮箱(我们只是学习、分享、交流)的登录操作!
1、前期准备
“搞事情”之前,我们需要先准备两个工具,分别是需要模拟浏览器登录的模块selenium和对应的驱动插件chromedriver.exe
这里,我们用了一个模拟浏览器登录的模块selenium
安装selenium模块:
pip install selenium
下载驱动插件chromedriver.exe,插件版本需与浏览器版本相同或相近,此处用的是谷歌浏览器,可在浏览器网页中输入地址chrome://version/,查看浏览器版本:
![6190f9eb72ba51210b49c232bb33f176.png](https://i-blog.csdnimg.cn/blog_migrate/c3d0882fbcee60098aaa5b05b03372b6.jpeg)
接着进入驱动下载页面http://chromedriver.storage.googleapis.com/index.html,下载相同或相近版本的chromedriver.exe:
![f30a383af6cbe82065a65dccf38126de.png](https://i-blog.csdnimg.cn/blog_migrate/6e6f35c55158e66b9b7c7562df955071.jpeg)
解压后将放到指定位置(随便放哪里,只要你知道在哪里),此处放于
“F:PycharmProjectsensorflow”文件路径下。
2、页面简析(如果着急看效果,跳过此步)
打开QQ邮箱官网(https://mail.qq.com/),得到如下界面,这里有几种登录方式,其中微信登录只能通过扫码实现,我们既然想用Python去自动化批量发送邮件,微信扫码登录自然不现实(若有高手可攻克此步,还望分享)。
QQ登录方式有两种,要么点击已登录的QQ头像(可通过cookie实现),要么直接密码登录,今天我们介绍后者。
![f90ec4d9f4f265ec3a1e3fb6dade6095.png](https://i-blog.csdnimg.cn/blog_migrate/125489d1926b9e67ffdf5922f192b9f3.jpeg)
点击账号密码登录,发现网址和之前没有变化,
![00bc7c35affb8109643c88dd74d2345f.png](https://i-blog.csdnimg.cn/blog_migrate/3b53240c1fd437aa0e8846d2cf55bf05.jpeg)
抓包后看到,返回的Referer信息一长串,这难道就是登录页面的实际网址?
![615913f6e412b18fdd2a826d60855db3.png](https://i-blog.csdnimg.cn/blog_migrate/9b0f85cbe270138ffadb1bdc93bc5623.jpeg)
复制Referer里的连接信息到浏览器看看,果然!好,那我们就不去请求邮箱官网了,直接对这个连接下手。
![eb2d57c0df1914979714a9139aaae3cd.png](https://i-blog.csdnimg.cn/blog_migrate/6972321ff00cfe244fc1c33d6ca64617.jpeg)
但是这个连接信息还是有扫码登录或是之前的cookie信息,我们想要的是账号密码登录,点击密码登录后,进入一个很单纯的表单页面。不错,我们找的就是它,检查密码登录的元素,发现它在类名为switch_btn的a标签下。
![39a847ce451d4b2a524e3bf52e12ec68.png](https://i-blog.csdnimg.cn/blog_migrate/3a70cc05809570fc3ec46835caea11b8.jpeg)
![928c72c7abe8b2ab36ad53174376ed78.png](https://i-blog.csdnimg.cn/blog_migrate/6c83826acb14bf94e1b2f6ab55fd7dd7.jpeg)
3、完整代码
好了,QQ邮箱的密码登录方式大概就是这个意思,接下来我们直接上代码:
from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsimport time# 初始化以及配置浏览器chrome_options = Options()# 1、添加user-agentchrome_options.add_argument('User-Agent="你自己的user-agent')# 2、禁止图片加载 数字1:可以加载图片 数字2:禁止加载图片No_Image_loading = {"profile.managed_default_content_settings.images": 1}chrome_options.add_experimental_option("prefs", No_Image_loading)path = 'F:PycharmProjectsensorflowchromedriver.exe' # 更改为你自己的插件路径driver = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)# 登录页面driver.get('https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=522005705&daid=4&s_url=https://mail.qq.com/cgi-bin/login?vt=passport%26vm=wpt%26ft=loginpage%26target=&style=25&low_login=1&proxy_url=https://mail.qq.com/proxy.html&need_qr=0&hide_border=1&border_radius=0&self_regurl=http://zc.qq.com/chs/index.html?type=1&app_id=11005?t=regist&pt_feedback_link=http://support.qq.com/discuss/350_1.shtml&css=https://res.mail.qq.com/zh_CN/htmledition/style/ptlogin_input_for_xmail440503.css')time.sleep(2)# 切换进入“账号密码登录”driver.find_element_by_id('switcher_plogin').click() # 点击# 输入账号信息driver.find_element_by_id('u').send_keys('你自己的QQ')
QQ邮箱的登录你掌握了,那其他网页的登录呢?赶快去试试吧!
——————————————————————————
![c24de8afaca6278bc361be47729a07cc.png](https://i-blog.csdnimg.cn/blog_migrate/8cf4d5dea9be99787d511b098a384e75.jpeg)