学习网络爬虫,简单的静态页面数据,很难满足我们的“学习”心灵之一,目前我们的“好奇心”数据往往隐藏得很深。需要登录或动态加载.今天模拟浏览器对QQ邮箱(我们只是学习、分享、沟通。
1、事前准备。
“在工作之前,必须准备两个工具:需要模拟浏览器登录的模块selenium和相应的驱动程序插件C。
这里,我们使用了模拟浏览器登录模块selenium。
安装Selenium模块:
Pipinstallselenium下载驱动程序插件c,插件版本必须与浏览器版本相同或相似。如果使用谷歌浏览器,可以通过在浏览器网页上输入地址chrome://version//来查看浏览器版本。
然后转到驱动程序下载页面,下载相同或相似版本的c:
解压后放在指定的位置(不管放在哪里,只要知道在哪里就行了)。
位于f : \ \ pycharm projects \ \ tensor flow文件路径中。
2、页面简析(如果着急看效果,跳过此步)
打开QQ邮箱官网(),得到如下界面,这里有几种登录方式,其中微信登录只能通过扫码实现,我们既然想用Python去自动化批量发送邮件,微信扫码登录自然不现实(若有高手可攻克此步,还望分享)。
QQ登录方式有两种,要么点击已登录的QQ头像(可通过cookie实现),要么直接密码登录,今天我们介绍后者。
点击账号密码登录,发现网址和之前没有变化,
抓包后看到,返回的Referer信息一长串,这难道就是登录页面的实际网址?
复制Referer里的连接信息到浏览器看看,果然!好,那我们就不去请求邮箱官网了,直接对这个连接下手。
但是这个连接信息还是有扫码登录或是之前的cookie信息,我们想要的是账号密码登录,点击密码登录后,进入一个很单纯的表单页面。不错,我们找的就是它,检查密码登录的元素,发现它在类名为switch_btn的a标签下。
3、完整代码
好了,QQ邮箱的密码登录方式大概就是这个意思,接下来我们直接上代码:
from selenium import webdriver
from import Options
import time
# 初始化以及配置浏览器
chrome_options = Options()
# 1、添加user-agent
c('User-Agent="你自己的user-agent')
# 2、禁止图片加载 数字1:可以加载图片 数字2:禁止加载图片
No_Image_loading = {"profile.managed_default_content_settings.images": 1}
c("prefs", No_Image_loading)
path = 'F:\\PycharmProjects\\tensorflow\\c'
# 更改为你自己的插件路径
driver = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)
# 登录页面
driver.get(';daid=4&s_url=cgi-bin/login?vt=passport%26vm=wpt%26ft=loginpage%26target=&style=25&low_login=1&proxy_url=proxy.html&need_qr=0&hide_border=1&border_radius=0&self_regurl=;app_id=11005?t=regist&pt_feedback_link=;css=;)
(2)
# 切换进入“账号密码登录”
driver.find_element_by_id('switcher_plogin').click()
# 点击# 输入账号信息driver.find_element_by_id('u').send_keys('你自己的QQ')
QQ邮箱的登录你掌握了,那其他网页的登录呢?赶快去试试吧!
——————————————————————————