• Python实现自动化网页操作


    1 准备

    推荐使用Chrome浏览器

    1.1 安装selenium程序包

    激活虚拟环境,打开新的Terminal,输入以下代码:

    python -m pip install selenium

    如下图所示,表示安装成功,版本为4.7.2

    安装成功

    关闭虚拟环境,打开新的Terminal

    1.2 引入函数模块

    1. #引入time模块,实现延时
    2. import time
    3. #引入selenium库中的webdriver模块,实现对网页的操作
    4. from selenium import webdriver
    5. #引入By Class,辅助元素定位
    6. from selenium.webdriver.common.by import By
    7. #引入ActionChains Class,辅助鼠标移动
    8. from selenium.webdriver.common.action_chains import ActionChains

    2 实现

    2.1 打开网页

    1. #打开谷歌浏览器
    2. driver = webdriver.Chrome()
    3. #打开网页
    4. driver.get('URL') #将URL替换为需要操作的网址

    2.2 元素定位

    要想实现对网页的控制,需要首先定位网页上的元素,一般为搜索框、选项、按钮等。

    selenium 4.0以上的版本更新了元素定位方式,要用到find_element函数,用法举例如下:

    el = driver.find_element(By.NAME, "*")

    首先要获取元素的信息:

    打开网页后,按F12,打开元素审查窗口

    点击窗口中红框标出的图标,即可在页面上选择需要定位的元素,查看其代码。

    一般需要定位的元素代码都以input开头,下图为搜索框的代码,从代码中可以提取定位元素所需要的信息:

    根据下列信息均可以定位元素,但要保证根据该信息可以唯一定位到该元素:

    如果根据其他信息无法唯一定位该元素,可以采取XPath定位,XPath的获取方式比较特殊,需要右键单击该代码行,在下拉列表中选择Copy full XPath,如下图所示:

    2.3 元素控制

    定位到元素后,可以进行下列操作,实现对元素的控制:

    以输入文字为例,代码如下(*为需要输入的文字):

    el.send_keys('*')

    如果打开网页时,需要控制的元素不在可视范围内,需要滑动鼠标定位,则要借助于ActionChains,否则可能会报错:找不到该元素。

    1. ActionChains(driver).move_to_element(el).click().perform()
    2. el.click()

    上述示例为点击操作,其中第二行最好加上,确保点到该元素

    另外一种找不到元素的原因可能是网页还没有加载完毕,此时就可以借助于延时功能:

    time.sleep(1)

    2.4 弹出框的处理

    如果点击按钮后,不是打开一个新的页面,而是弹出了一个窗口,需要在新的窗口中操作,则需要通过如下代码转到新的frame下,否则可能会报错:找不到该元素。

    driver.switch_to.frame(0)

    随后继续按2.2定位元素即可。

  • 相关阅读:
    希格斯玻色子——物质质量起源的探索
    西米支付:游戏支付的概念,发展,什么是游戏支付接口?
    数学建模--粒子群算法(PSO)的Python实现
    查词翻译类应用使用数据接口api总结
    Python学习2(列表、元组、字典,集合set)
    PHP使用Redis实现关注关系
    laravel Modify data is invalid 解决修改数据无效
    JSP:Javabean
    神经网络自动求导
    DVWA安装教程(懂你的不懂·详细)
  • 原文地址:https://blog.csdn.net/a448335587/article/details/134190534