selenium模拟登陆百度贴吧和新浪微博

selenium和phantomjs是爬取动态获取数据和AJAX的良配。上一篇已经说了phantomjs的安装方法与常见用法。接下来就是安装Selenium和phantomjs实现模拟登陆百度贴吧,并实现签到。
selenium的安装过程对于作者本人有点坎坷,真心感觉纸上得来终觉浅,要得出真知还是实践来撸一遍。

撸一遍
  • 1.安装selenium
    • 安装虐我千百遍,结果发现自己傻了眼。假设已经安装好了python解释器(新版本默认安装了pip)运行下面命令:
pip install selenium
  • 2.查看selenium安装成功与否,如果运行下面的命令,出现下图的selenium,则说明安装成功:
pip list
安装的模块
  • 3.新创建一个python文件,代码如下所示,但是运行的时候出现can not find the module selenium:
from selenium import webdriver
driver=webdriver.PhantomJS()
print(driver.page_source)
driver.quit()

吓屎了
  • 4.明明安装了selenium,怎么就是找不到呢?不要慌,沉着冷静,没关系,百度上大多的办法都解决不了问题,不过总是有大神的办法能解决的。运行下面的命令。
C:\Users\userName>python
Python 3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:25:24) [MSC v
900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium
>>> print( selenium.__file__)
D:\anaconda\lib\site-packages\selenium\__init__.py
>>>
  • 5.从上面可以看出自己造了个坑,之前因为要安装Anaconda使用scrapy,所以默认安装selenium的时候会安装在D:\anaconda\lib\site-packages\;所以在python的IDLE引用selenium模块时会引用不到,因为python默认安装的模块路径是D:\pyfiles(这是python安装的目录)\Lib\site-packages\。所以最好的解决方法是直接copy一份到python解释器目录下。


    解决问题
  • 6.解决了slenium引用模块问题,接下来要解决的问题是Phantomjs的安装路径必须加入系统的环境变量,才能调用。右键点击我的电脑,然后选择属性,然后如下图所示,找到path变量值,最后把安装路径添加到path。
添加到path
  • 7.观察百度贴吧的登录过程,百度贴吧登录先要点击登录然后弹出模态窗,最后输入账号与密码才可以登录。由于百度贴吧是通过js进行数据的加载,所以我们必须延迟几秒,等待百度贴吧完全把数据加载进来。


    登录过程
  • 8.登录模态框的账号id是TANGRAM__PSP_10__userName;密码id是TANGRAM__PSP_10__password;登录按钮id是TANGRAM__PSP_10__submit。
<html>
 <head></head>
 <body>
  <p id="TANGRAM__PSP_10__userNameWrapper" class="pass-form-item pass-form-item-userName" style="display:"><label for="TANGRAM__PSP_10__userName" id="TANGRAM__PSP_10__userNameLabel" class="pass-label pass-label-userName">手机/邮箱/用户名</label><input id="TANGRAM__PSP_10__userName" type="text" name="userName" class="pass-text-input pass-text-input-userName open" autocomplete="off" value="" placeholder="手机/邮箱/用户名" /><span id="TANGRAM__PSP_10__userName_clearbtn" class="pass-clearbtn pass-clearbtn-userName" style="display: none; visibility: hidden; opacity: 1;"></span><span id="TANGRAM__PSP_10__userNameTip" class="pass-item-tip pass-item-tip-userName" style="display:none"><span id="TANGRAM__PSP_10__userNameTipText" class="pass-item-tiptext pass-item-tiptext-userName"></span></span></p>
  <ul id="TANGRAM__PSP_10__suggestionWrapper" class="pass-suggestion-list" style="display: none; visibility: hidden; opacity: 1;">
   <li class="pass-item-suggsetion" data-select="13071673760" data-type="history">13071673760<a data-delete="13071673760" title="删除该记录"></a></li>
   <li class="pass-item-suggsetion" data-select="13415334317" data-type="history">13415334317<a data-delete="13415334317" title="删除该记录"></a></li>
   <li class="pass-item-suggsetion" data-select="huahaoworkspace@163.com" data-type="history">huahaoworkspace@163.com<a data-delete="huahaoworkspace@163.com" title="删除该记录"></a></li>
  </ul>
  <span class="pass-item-selectbtn pass-item-selectbtn-userName" style="display: none; visibility: hidden; opacity: 1;"></span>
  <p></p>
 </body>
</html>
  • 9.登录百度贴吧,和实行签到代码,中间使用太多的sleep进行间歇,主要是等待页面的加载,下次会用selenium的隐式等待与显式等待重构:


    明明偷懒
from selenium import webdriver
from time import sleep
driver=webdriver.PhantomJS()
driver.get("https://tieba.baidu.com/index.html#")
sleep(3)
#模拟点击登录按钮,并且弹出模态窗
driver.find_element_by_xpath("//li[@class='u_login']/div/a").click()
sleep(2)
#清除账号输入框的历史账号
driver.find_element_by_id("TANGRAM__PSP_10__userName").clear()
#填写账号
driver.find_element_by_id("TANGRAM__PSP_10__userName").send_keys("账号")
driver.find_element_by_id("TANGRAM__PSP_10__password").clear()
#填写密码
driver.find_element_by_id("TANGRAM__PSP_10__password").send_keys("密码")
#模拟点击登录按钮
driver.find_element_by_id("TANGRAM__PSP_10__submit").click()
sleep(5)
# div#onekey_sign>a是一键签到的css选择器,其中j_sign_btn是点击一键签到后踏出来的模态窗的按钮css选择器
driver.find_element_by_css_selector("div#onekey_sign>a").click()
driver.find_element_by_css_selector(".j_sign_btn ").click()
sleep(2)
driver.get_screenshot_as_file("C:\\Users\\username\\Desktop\\1.png")
driver.quit()

  • 10.有图有真相。


    辣么长的图是用来凑字数的吧
  • 11.文末有彩蛋,只要模拟登录过中国最大中文社区,哪能忽略了我们的新浪微博呢。都跟上述百度贴吧的逻辑是一样的,不过因为新浪微博网页是响应性。用phantomjs没有最大化窗口的时候,登陆框等都是不可见的即display:none,只有最大化窗口,然后显式等待,最后发现可以模拟登录成功,直接上一遍。
其实是别的博主给的建议
from selenium import webdriver
from time import sleep
driver=webdriver.PhantomJS()
driver.maximize_window()
driver.get("https://www.weibo.com/login.php")
sleep(3)
driver.find_element_by_id("loginname").clear()
driver.find_element_by_id("loginname").send_keys("xxxx")
driver.find_element_by_xpath("//*[@id='pl_login_form']/div/div[3]/div[2]/div/input").clear()
driver.find_element_by_xpath("//*[@id='pl_login_form']/div/div[3]/div[2]/div/input").send_keys("xxxx")
driver.find_element_by_xpath("//*[@id='pl_login_form']/div/div[3]/div[6]/a").click()
sleep(10)
driver.get_screenshot_as_file("C:\\Users\\Username\\Desktop\\1.png")
driver.quit()
登录后的场景

关于Selenium的相关介绍,下一篇介绍。感觉又挖了一波坑。改进的版本要早做准备了。

正常表情
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容