本文介绍如何使用Python的selenium库制作脚本。

本文介绍如何使用Python的selenium库制作脚本。
概念:
       Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,可以模拟人工手动进行操作浏览器。
       使用准备:
              第一步:安装selenium

pip install Selenium

Python selenium 类定义 python中selenium库_Python selenium 类定义

首先点击Terminal,等价于cmd命令行,输入命令,会自动下载selenium库。

       补充:对于Python第三方库,会有安装慢,容易失败,可以使用国内的清华源安装一些库,最后一个是库名,使用的是国内的清华源(可以百度)

       清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务,帮助用户更方便地获取开源软件。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名

第二步:安装浏览器驱动

先查看自己Chrome的版本信息

Python selenium 类定义 python中selenium库_chrome_02


版本是96.0.4664.45。

Python selenium 类定义 python中selenium库_脚本_03


       所以下载对应的版本即可,如果没有对应的版本,就向上找,找比自己版本小的驱动版本。

       小伙伴可以自己看看自己应该下载哪个版本。

       64的可以下载32位的压缩包。

       Chrome驱动:下载驱动       下载完将压缩包解压,将exe文件放到自己的Python解释器下即可,

       如果找不到自己的Python解释器位置,可以运行一个Python程序,运行结果的显示框第一行就是Python解释器的位置。

       找到下面路径,将驱动文件粘贴进去即可。

Python selenium 类定义 python中selenium库_chrome_04


准备工作做完了


              第三步:编写代码

导入库:

#因为驱动文件是Chrome,所以导入Chrome
from selenium.webdriver import Chrome
#导入time库,是因为有时候网络可能不好,网页加载延迟,
#导致命令执行到了而找不到页面元素从而报错,等小伙伴上手操作会有体验
import time
#用于处理一些网页获得的字符串
import re
#导入By,用于获取元素
from selenium.webdriver.common.by import By

创建浏览器:

#创建浏览器对象
web = Chrome()
#程序睡眠1s
time.sleep(1)
#打开这个网址
web.get('http://www.baidu.com')
#输出页面的title
print(web.title)

获取元素:

Python selenium 类定义 python中selenium库_Python selenium 类定义_05


右键点击:

Python selenium 类定义 python中selenium库_Chrome_06


复制,复制完整的XPath:

Python selenium 类定义 python中selenium库_Chrome_07


这个地方少一张图,这一步是复制XPATH,或许还有个full XPATH,不要弄混了,是XPATH

然后将粘贴到程序即可:

在这里我只解释下面用到的方法。

方法

作用

send_keys()

向一个元素中写入字符串

click()

点击某个元素

text

获取标签的文本

title

获取页面的标题

#通过By.XPATH获取元素,
print(web.title)
text = web.find_element(By.XPATH,'/html/body/div[1]/div[1]/div[3]/a[1]').text
print(text)
web.find_element(By.XPATH,'/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys("Python")
time.sleep(2)
web.find_element(By.XPATH,'/html/body/div[1]/div[1]/div[5]/div[2]/div/form/span[2]/input').click()

如果有以下错误,找不到元素,在确定没有写错的情况下,可以添加。
原因是程序运行较快,网页没有加载出来,导致程序找不到这个元素。
让程序睡眠一会即可。

tim.sleep(2)

错误截图:

Python selenium 类定义 python中selenium库_脚本_08


有些网站具有反爬机制。

如果想要后台运行,可以将创建浏览器与包改为下面

from selenium import  webdriver
from selenium.webdriver.chrome.options import Options
import time
from selenium.webdriver.common.by import By

chrome_options = Options()

chrome_options.add_argument('--headless')

web = webdriver.Chrome(options=chrome_options)

大家可以练一练,提示:可以做刷题脚本。