使用python+selenium模拟自动发微博

编程语言:python + selenium库
IDE:pycharm 2018.1 CE、IDLE
浏览器:chrome 65.0
操作系统:windows 10 专业版 1709

1. 安装 Python

  去python官网下载,这里选择python3.6,勾选将python加入PATH,之后只要点击Install Now安装完成(不喜欢在默认路径安装请自定义安装,并勾选将python加入PATH)

使用python+selenium模拟自动发微博_第1张图片
Python 安装界面
使用python+selenium模拟自动发微博_第2张图片
Python 安装完成

2. 安装selenium库,直接利用pip

  如果添加了script路径到环境变量path下,直接可以pip install selenium

使用python+selenium模拟自动发微博_第3张图片
pip 安装 selenium

  如果没有,可以python –m pip install selenium

使用python+selenium模拟自动发微博_第4张图片
pip 安装 selenium

3. 编写程序

  由于本机已经自带chrome,所以使用python自带的IDLE直接上手,根据selenium官网提示,先写了一个获取目标源代码的小程序,发现报异常selenium.common.exceptions.WebDriverException:'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

使用python+selenium模拟自动发微博_第5张图片
缺少 selenium 浏览器脚本驱动

  点击进入提示的网址之后,发现有关于webdriver和chromedriver的介绍,才知道Chromedriver是软件测试时所需要的驱动,需要下载对应操作系统的版本并将其路径添加到操作系统的环境变量PATH中去

使用python+selenium模拟自动发微博_第6张图片
6.png

  因为python主目录在安装的时候默认加入PATH(python可以在终端或者cmd下直接运行的原因),所以,可以直接将下载到的Chromedriver放到python主目录下,这里我选择在python主目录下新建一个webdriver文件夹,并将其添加到PATH环境变量,里面存放这Chromedriver

使用python+selenium模拟自动发微博_第7张图片
添加到 PATH 环境变量

  再次测试之前的代码,发现成功调用chrome浏览器,并弹出一个命令行窗口(发现并不是每个人的都会弹出,可能在后台执行),显示正在对浏览器进行监听

使用python+selenium模拟自动发微博_第8张图片
脚本驱动 Chrome 浏览器

  接下来就用PyCharm(下载安装、环境配置过程省略)写代码了,因为自带的IDLE代码提示功能真的不咋地,具体过程如下:先打开微博登录页面https://weibo.com/,找到登录表单位置,并通过chrome开发人员工具——审查元素帮助我们查看它在网页当中的位置

使用python+selenium模拟自动发微博_第9张图片
分析 微博 主页

  因为在源代码区域,开发人员工具已经帮我们自动选中了我们想要的元素部分,我们需要的是可以查找到这个元素的一个标志,这个标志可以是id、name、以及xpath,这里第一个先试一下id吧,可以看到用户名输入框的id是”loginname”

使用python+selenium模拟自动发微博_第10张图片
尝试填入微博帐号

  发现报错,找不到指定条件的元素,可以发现,在访问微博主页的时候,它进行了一个强制https的跳转,所以设置一下延迟(其实登录界面是https://weibo.com/login.php,直接访问这个页面不会进行跳转,但是问题还是要解决的)

使用python+selenium模拟自动发微博_第11张图片
设置延迟后

  发现成功填入用户名,同样的对密码框使用的同样方法,这次使用xpath

使用python+selenium模拟自动发微博_第12张图片
分析密码框的信息

  接下来一步直达,写出全部主要代码,完成发布微博任务

使用python+selenium模拟自动发微博_第13张图片
完成任务的主要代码

使用python+selenium模拟自动发微博_第14张图片
发布微博成功

4. 完整代码

使用python+selenium模拟自动发微博_第15张图片
15.png

5. 过程中出现的问题及其思考

  1. 遇到找不到属性、找不到html元素的**
  • 可能是因为网页进行了重定位或重定向,而延迟时间不够,导致抓取到的网页源码不是所需要的,导致解析出错

  • 可能是因为平常手动登录微博的时候默认选择了“记住我”,导致打开登录网页时,直接以保存的cookie登录,找不到用户名和密码输入框而报错,可以通过清楚浏览记录(主要是cookie)解决

  1. 代码运行时调用了浏览器但是不会填入网址并访问**
  • 可能是因为浏览器版本和浏览器驱动程序版本不一致,或者说不兼容所致。例如:Firefox LTS长期支持版与最新下载的geckodriver就会出现这种情况
  1. 用户名密码时而会填入,时而不会**
  • 可能是因为网页未完全加载,但是代码已经运行,通过设置延迟解决
  1. 找不到id、name等属性**
  • 可以直接利用浏览器复制其xpath

你可能感兴趣的:(使用python+selenium模拟自动发微博)