Python中如何使用selenium结合jQuery获取元素值

在页面中有这样代码

这个 src 是用 Ajax 获取的,然后再赋值给 src.

现在用 python+selenium 用 find_element_by_class_name("indentify_content").find_elements_by_tag_name('img')[0].get_attribute('src')

无法获取该值,请大神们看看.


Python中如何使用selenium结合jQuery获取元素值

5 回复

把第一步 find 的输出看看


在Python的Selenium中直接执行jQuery来获取元素值,可以通过execute_script()方法注入jQuery并执行选择器。首先确保页面已加载jQuery,如果没有则需要手动注入。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 启动浏览器
driver = webdriver.Chrome()
driver.get("你的目标URL")

# 如果页面没有jQuery,先注入jQuery库
jquery_js = """
if (!window.jQuery) {
    var script = document.createElement('script');
    script.src = 'https://code.jquery.com/jquery-3.6.0.min.js';
    document.head.appendChild(script);
}
"""
driver.execute_script(jquery_js)

# 等待jQuery加载完成
wait = WebDriverWait(driver, 10)
wait.until(lambda d: d.execute_script('return typeof jQuery != "undefined"'))

# 使用jQuery选择器获取元素值
# 示例:获取id为'myElement'的元素的文本内容
element_value = driver.execute_script("return $('#myElement').text();")
print(f"获取到的值: {element_value}")

# 或者获取属性值,比如获取input的value
input_value = driver.execute_script("return $('#myInput').val();")
print(f"输入框的值: {input_value}")

# 关闭浏览器
driver.quit()

关键点说明:

  1. 注入jQuery:如果页面本身没有jQuery,需要先通过execute_script()动态添加jQuery库。
  2. 等待加载:注入后需要等待jQuery库加载完成,使用WebDriverWait确保jQuery对象可用。
  3. 执行jQuery选择器:在execute_script()中直接编写jQuery代码,如$('#myElement').text()获取文本,或$('#myInput').val()获取表单值。
  4. 返回值execute_script()会返回jQuery执行的结果,可以直接在Python中使用。

一句话建议:确保页面有jQuery,然后用execute_script()执行你的选择器代码。

你这个代码都不判断数组有没有数据?

直接 by css 不是更简洁,(.indentify_content[tag=img])

Ajax 注意 race condition

暴力做法,等几秒再取值
活着 webdriverwait + 一句 css 搞定

回到顶部