selenium实现浏览器自动化(玩起来了)

  • selenium模块简单介绍

    selenium是基于浏览器自动化的一个模块,可以便捷的获取网站中的动态加载数据,便捷的实现模拟登录。

  • 使用流程

    1、下载一个浏览器的驱动程序(笔者下载的是谷歌驱动程序)

      玩什么浏览器就下载什么样的驱动程序,下载路径与驱动程序和浏览器版本对应关系的链接如下:

      http://chromedriver.storage.googleapis.com/index.html

      http://blog.csdn.net/huilan_same/article/details/51896672

    2、实例化一个浏览器对象

      需要实现导入包:

from selenium import webdriver
# 新版本中executable_path被放到了Service函数里,所以要先导入Service包
from selenium.webdriver.chrome.service import Service
# 实例化一个浏览器对象(传入浏览器驱动程序的路径)
s = Service(r'./chromedriver.exe')
driver = webdriver.Chrome(service=s)

    3、编写基于浏览器自动化的操作代码

      发起请求:

driver.get('https://www.baidu.com/')

      标签定位:

# 需要事先导包
from selenium.webdriver.common.by import By

# 根据id属性进行定位
search_input = driver.find_element(By.ID,'kw')

# 根据class属性进行定位
close_ad = driver.find_element(By.CLASS_NAME,'J_mm_dialog_close')

      标签交互:

# 往搜索框中输入关键字
search_input.send_keys('中北大学')

# 点击某按钮
close_ad.click()

      执行js程序:

复制代码
# 滚动条缓慢下拉到最底
# 获取当前窗口总高度
js = "return action=document.body.scrollHeight"
# 初始化现在滚动条所在高度为0
height = 0
# 当前窗口总高度
new_height = driver.execute_script(js)

while height < new_height:
    # 将滚动条调整至页面底部
    for i in range(height, new_height, 100):
        driver.execute_script('window.scrollTo(0, {})'.format(i))
        time.sleep(0.8)
    height = new_height
    time.sleep(2)
    new_height = driver.execute_script(js)
复制代码

      前进、后退:

# 回退
driver.back()

# 前进
driver.forward()

      关闭浏览器:

driver.close()
  • 代码演示
复制代码
# -*- coding:utf-8 -*-
# @Time : 2022/1/23 0023 10:07
# @Author : Tzy0425
# @File : selenium基础用法.py

"""
老版本写法:
from selenium import webdriver
bro = webdriver.Chrome(executable_path='./chromedriver')
"""

from selenium import webdriver
# 新版本中executable_path被放到了Service函数里,所以要先导入Service包
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from lxml import etree
import time

# 实例化一个浏览器对象(传入浏览器驱动程序的路径)
s = Service(r'./chromedriver.exe')
driver = webdriver.Chrome(service=s)
driver.get('https://www.baidu.com/')
time.sleep(2)

# 标签定位
# close_ad = driver.find_element(By.CLASS_NAME,'J_mm_dialog_close')
# close_ad.click()
search_input = driver.find_element(By.ID,'kw')
# 标签交互
search_input.send_keys('中北大学')

# 点击搜索按钮
btn_search = driver.find_element(By.CLASS_NAME,'s_btn')
btn_search.click()
time.sleep(4)

# 执行js程序
# 下拉滚动条,向下翻一整页
# driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
# time.sleep(4)

# selenium控制浏览器滚动条缓慢下拉到最底
# 获取当前窗口总高度
js = "return action=document.body.scrollHeight"
# 初始化现在滚动条所在高度为0
height = 0
# 当前窗口总高度
new_height = driver.execute_script(js)

while height < new_height:
    # 将滚动条调整至页面底部
    for i in range(height, new_height, 100):
        driver.execute_script('window.scrollTo(0, {})'.format(i))
        time.sleep(0.8)
    height = new_height
    time.sleep(2)
    new_height = driver.execute_script(js)

# 浏览其它网页
driver.get('http://www.nuc.edu.cn/')
time.sleep(2)

# 回退
driver.back()
time.sleep(2)

# 前进
driver.forward()
time.sleep(2)

driver.close()
复制代码

  运行效果如下:

  (我发誓在运行后,我的手已经完全脱离了键盘和鼠标!!!)

 

posted @   Sunshine_y  阅读(503)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示