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()
关键点说明:
- 注入jQuery:如果页面本身没有jQuery,需要先通过
execute_script()动态添加jQuery库。 - 等待加载:注入后需要等待jQuery库加载完成,使用
WebDriverWait确保jQuery对象可用。 - 执行jQuery选择器:在
execute_script()中直接编写jQuery代码,如$('#myElement').text()获取文本,或$('#myInput').val()获取表单值。 - 返回值:
execute_script()会返回jQuery执行的结果,可以直接在Python中使用。
一句话建议:确保页面有jQuery,然后用execute_script()执行你的选择器代码。
你这个代码都不判断数组有没有数据?
直接 by css 不是更简洁,(.indentify_content[tag=img])
Ajax 注意 race condition
暴力做法,等几秒再取值
活着 webdriverwait + 一句 css 搞定

