工欲善其事,必先利其器 —— selenium 模块(2)

本文详细讲解了如何使用Selenium进行百度翻译自动化操作,涉及网页窗口管理、文本框定位与输入、以及动态加载内容的抓取。通过实例演示了关闭多余窗口和输入文字翻译的过程,并提取了关键步骤和XPath解析技巧。
摘要由CSDN通过智能技术生成

selenium 自动化操作(1)(以百度翻译为例)

from selenium import webdriver

if __name__ == '__main__':
    bro = webdriver.Chrome(executable_path = "chromedriver.exe")

    # 发起请求
    bro.get('https://fanyi.baidu.com/')

我们运行程序发现我们使用 selenium 请求到的网页和我们自己打开的网页有一点不同。

使用 selenium 请求到的网页多了一个页面窗口。

在这里插入图片描述

那么我们要怎么使用 selenium 关闭这个窗口呢?

我们可以使用元素的 xpath 路径,元素的 id 名,或者说元素的属性定位到关闭的符号,并且使用 click() 方法模拟鼠标的点击。

这是定位元素的一些方法

在这里插入图片描述

# 使用 class 属性定位到 “x” 符号
    btn = bro.find_element_by_class_name('desktop-guide-close')

    # 模拟鼠标点击
    btn.click()

注意:
如果报错,很有可能是还没加载完成,可以使用 time.sleep() 让页面完成加载

接下来我们就看到页面来到我们熟悉的页面

在这里插入图片描述
那么我们要怎么把我们想要翻译的文字输入到文本框中呢?

还是先定位到文本框的位置,再输入文字(使用 send_keys() 方法),点击翻译

# 定位到文本框
    translate_input = bro.find_element_by_id('baidu_translate_input')

    # 传入文字
    translate_input.send_keys("奥特曼")
    # 等待两秒
    sleep(2)

结果如图

在这里插入图片描述
因为是动态加载的数据,所以我们不需要点击 “ 翻译 ”,结果就会自动出现。如果需要点击,我们也可以先定位按键的位置,再模拟点击。

那么我们要如何获取翻译的结果呢?

我们知道动态加载的数据需要找到相应的 API,那么现在我们需要吗?答案是不需要,我们只需要对现在的页面进行 xpath 解析就行。

代码如下:

from lxml import etree

……

# 获取此时的页面源码
    page = bro.page_source

    # xpath 解析
    tree = etree.HTML(page)
    content = tree.xpath('//*[@id="main-outer"]/div/div/div[1]/div[2]/div[1]/div[2]/div/div/div[1]/p[2]/span/text()')

    print(content)

    bro.quit()

结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值