Selenium+Python实现微博自动登录:环境配置与代码详解

Theo
Theo
发布时间:2026-10-12| 2人浏览过
原创

本文介绍使用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 等定位方法,但在实际使用中可能出现找不到元素的情况,推测这可能与浏览器版本不匹配有关。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。