Selenium+Python实现微博自动登录:环境配置与代码详解
本文介绍使用Selenium结合Python实现网页自动登录的方法,以微博为例演示完整流程。重点解析Python 2.7与Selenium 3.0.2及Firefox特定版本的兼容性问题,提供geckodriver与浏览器版本的匹配建议。通过XPath定位元素、输入账号密码并提交,并获取Cookie。文中包含完整代码示例及常见报错排查指南,适合初学者参考。
Selenium Python 封装了一套简洁的API,旨在辅助开发者利用 Selenium WebDriver 编写功能测试或验收测试。借助该 API,用户可以直观地调用所有 Selenium WebDriver 支持的功能。Selenium Python 提供了便捷的接口来驱动包括 Firefox、Chrome、IE 以及 Remote 在内的多种浏览器,目前支持的 Python 版本为 2.7 或 3.2 及以上版本。
Selenium 可用于自动化测试、抢票脚本及数据采集等场景。初次接触时,本文以模拟登录百度为例,演示如何自动启动浏览器、输入账号密码并提交表单完成登录操作。
出于工作需求,需要实现微博的自动登录功能。经过查阅相关资料,最终决定采用 Selenium 配合 Python 来实现这一目标。
Selenium 是一款 Web 自动化测试工具,主流用法通常结合 Java 或 Python。本文选用 Python 作为开发语言,其支持的浏览器涵盖所有主流浏览器,如 IE、Mozilla Firefox 和 Google Chrome。
安装步骤此处不再赘述,但在后续使用中,发现许多报错源于版本兼容性。因此,以下列出经过验证的可用版本组合:
python2.7
selenium3.0.2
火狐驱动 geckodriver.exe 版本 v0.14.0(若使用更高版本,可能会引发异常报错)
火狐浏览器 52.0.2 (32 位)(若版本过低或尝试使用 53 的最新版本,均会导致报错)
#encoding=utf-8
from selenium import webdriver
import time
import os
#模拟登陆weibo
def getCookies(weibo):
""" 获取Cookies """
cookies = []
driver = webdriver.Firefox()
time.sleep(3) #sleep一下,否则有可能报错
driver.get("https://weibo.com/login/")
#cur_path=os.getcwd()
#fileSuc = open(cur_path+"/login.html", 'w')
#fileSuc.write(driver.page_source)
#用户名 密码
elem_user = driver.find_element_by_xpath('//input[@id="loginname"]')
elem_user.send_keys('*****@163.com') #浏览器版本不匹配的时候这里可能报错
elem_pwd = driver.find_element_by_xpath('//input[@type="password"]')
elem_pwd.send_keys('*****')
commit = driver.find_element_by_xpath('//a[@node-type="submitBtn"]')
commit.click()
time.sleep(3)
#fileSuc1 = open(cur_path+"/weibo2.html", 'w')
#fileSuc1.write(driver.page_source)
#print driver.title
#登录成功后获取cookie
cookie = {}
if "微博-随时随地发现新鲜事" in driver.title:
for elem in driver.get_cookies():
cookie[elem["name"]] = elem["value"]
if len(cookie) > 0:
logger.warning("Get Cookie Successful: %s" % account)
cookies.append(cookie)
continue
else:
logger.warning("Get Cookie Failed: %s!" % account)
driver.close()
driver.quit()
return cookies
cookies = getCookies(myWeiBo)
print cookies
logger.warning("Get Cookies Finish!( Num:%d)" % len(cookies))
使用 find_element_by_xpath 来定位控件位置。若无法定位,可尝试将网页源码保存下来检查是否存在对应控件。需要注意的是,如果是安全控件或通过 JavaScript 实现的登录逻辑,该方法可能无法获取到相关元素。
此外,还有 find_element_by_name 和 find_element_by_id 等定位方法,但在实际使用中可能出现找不到元素的情况,推测这可能与浏览器版本不匹配有关。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









