selenium 安装
1.下载selenium插件,需要匹配自己的浏览器(这里只举例谷歌)
(1)谷歌浏览器驱动下载地址 (下载好之后解压,放在一个位置即可)
http://chromedriver.storage.googleapis.com/index.html
(2)谷歌驱动和谷歌浏览器版本之间的映射表 (由于版本都比较新,直接选择对应的版本号的就好了)
http://blog.csdn.net/huilan_same/article/details/51896672
(3)查看自己谷歌浏览器版本
谷歌浏览器右上角‐‐>帮助‐‐>关于
(4)win+R 打开cmd 定位到 自己的Puyton库 中的 Scripts文件夹下
执行 pip install selenium 命令 安装 selenium库
2.selenium 的基本用法
#导入
from selenium import webdriver
#创建浏览器操作对象
path = “chromedriver.exe”(谷歌浏览器驱动的位置)
browser = webdriver.Chrome(path)
#访问网站
url = “https://www.baidu.com”
browser.get(url)
#获取页面元素内容
content = browser.page_source
print(content)
selenium元素定位
#以下 方法都有 element+s 的相同方法
#是获取多个对象 用法相同,就不一 一 举例
#根据id值 找到对象
find_element_by_id("")
#列 这是获取的一个按钮对象
butten = browser.find_element_by_id(“su”)
print(butten)
#根据某属性值 找到对象
find_element_by_属性名("")
#列
butten = browser.find_element_by_name(“wd”)
print(butten)
#根据xpath 找到对象
find_element_by_xpath("")
#列 这里需要懂 xpath 相关语法
butten = browser.find_element_by_xpath("//input[@id=‘su’]")
print(butten)
#根据标签名字 找到对象
find_elements_by_tag_name(“标签名”)
#例 获取页面中所有的 input 标签对象
butten = browser.find_elements_by_tag_name(“input”)
print(butten)
#选择器 找到对象
#id选择器 .class选择器(不懂可以学习前端知识)
butten = browser.find_element_by_css_selector("#su")
print(butten)
#获取超链接 找到对象
根据直播 超链接中的内容 直接定位元素
butten = browser.find_element_by_link_text(“直播”)
print(butten)
元素信息的获取
butten = browser.find_element_by_id(“su”)
#获取元素 值 根据属性名 获取属性值
print(butten.get_attribute(“属性名”))
print(butten.get_attribute(“value”))
#获取当前对象的标签名称
print(butten.tag_name)
#获取元素文本
a = browser.find_element_by_link_text(“新闻”)
print(a.text)
3.基本交互方法
#获取输入框
input = browser.find_element_by_id(“kw”)
#输入信息
input.send_keys(“csdn”)
#获取按钮对象
butten = browser.find_element_by_id(“su”)
#点击按钮
butten.click()
#滑动页面
js_bottom = “document.documentElement.scrollTop=100000”
browser.execute_script(js_bottom)
#返回上一页
browser.back()
#回退
browser.forward()
4.自动化模拟百度访问自己博客所有文章的案例代码
# _*_ coding : utf-8 _*_
# @Time : 2021/10/14 16:16
# @Author Lpx
# @File : selenium_02
# @Project : pythonProject
# 自动访问 自己的博客 3篇最新文章
import time
from selenium import webdriver
#切换最新页面方法
def windowsNxet():
# 当前打开的所有窗口
windows = browser.window_handles
#关闭当前页面
browser.close()
# 转换到最新打开的窗口
browser.switch_to.window(windows[-1])
#驱动地址 这里使用的是谷歌浏览器驱动
path = "chromedriver.exe"
#加载驱动
browser = webdriver.Chrome(path)
url = "http://ww.baidu.com"
browser.get(url)
#强制睡眠 保证页面元素加载完毕
time.sleep(2)
#获取百度输搜索入框
baiduinput = browser.find_element_by_id("kw")
#输入要搜索的内容
baiduinput.send_keys("csdn")
time.sleep(2)
#获取百度 百度一下 按钮
baidubutten = browser.find_element_by_id("su")
#执行搜索功能
baidubutten.click()
time.sleep(4)
#获取当前页搜索到的第一个 超链接标签
# 因为第一个标签就是想要的网站
baidua = browser.find_element_by_xpath("//h3/a")
#点击 超链接
baidua.click()
time.sleep(6)
# 转换到最新打开的窗口
windowsNxet()
#获取 csdn 的搜索框
csdninput = browser.find_element_by_xpath('//input[@id="toolbar-search-input"]')
#输入想要搜索的内容
csdninput.send_keys("my_batis的博客")
time.sleep(2)
#获取 csdn 搜索按钮
csdnbutton = browser.find_element_by_id("toolbar-search-button")
#执行
csdnbutton.click()
# 转换到最新打开的窗口
windowsNxet()
time.sleep(2)
#获取所有 li 标签
csdnli = browser.find_elements_by_xpath("//ul/li")
yonghunum = 0
# 筛选出 用户 li
for n in range(len(csdnli)):
if(csdnli[n].text == '用户'):
yonghunum = n
break
#获取 用户栏 的 li
yonghuli = csdnli[n]
#执行
yonghuli.click()
time.sleep(2)
#xpath 语法锁定自己的 博客
myboke = browser.find_element_by_xpath('//a[@href="https://me.csdn.net/my_batis?ops_request_misc=&request_id=&biz_id=&utm_medium=distribute.pc_search_result.none-task-user-null-1-121486706.nonecase&utm_term=my_batis%E7%9A%84%E5%8D%9A%E5%AE%A2"]')
#进入自己的博客页面
myboke.click()
time.sleep(2)
# 转换到最新打开的窗口
windowsNxet()
#获取自己所哟普文章的 链接
bokelist = browser.find_elements_by_xpath("//article/a")
#浏览自己所有的博客文章
for n in range(len(bokelist)):
bokelink = bokelist[n]
bokelink.click()
time.sleep(2)
#获取所有页面
windows = browser.window_handles
#切换到最新页面
browser.switch_to.window(windows[-1])
time.sleep(2)
#关闭最新页面
browser.close()
#切换回去
browser.switch_to.window(windows[0])
#关闭浏览器
time.sleep(3)
browser.quit()
5.无界面化
无界面化 可以提升运行速度,关掉不必要的页面数据加载
用当前这个获取的 browser 替换 上面的browser 即可
可以用
browser.save_screenshot(“tupian.png”)
方法 截取执行的图片,看到执行的过程
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
# 指定浏览器分辨率
options.add_argument('window-size=1920x1280')
# 需要加上这个属性来规避bug
chrome_options.add_argument('--disable‐gpu')
# 隐藏滚动条, 应对一些特殊页面
options.add_argument('--hide-scrollbars')
# 不加载图片, 提升速度
options.add_argument('blink-settings=imagesEnabled=false')
# 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.add_argument('--headless')
# 以最高权限运行
options.add_argument('--no-sandbox')
#添加crx插件
option.add_extension('d:\crx\AdBlock_v2.17.crx')
# 禁用JavaScript
option.add_argument("--disable-javascript")
# 本地 谷歌浏览器的路径
path = r'C:\xxxxxxx\Google\Chrome\Application\chrome.exe'
chrome_options.binary_location = path
#executable_path 谷歌驱动路径的位置,可以不写,他有默认值为 当前路径下的 chromedriver.exe
browser = webdriver.Chrome(chrome_options=chrome_options,executable_path=".exe")
browser.get('http://www.baidu.com/')
仅供学习参考!