Python 如何选择属性为“的复选框”;勾选“;其价值为;勾选“;使用硒?
我目前正在用Python中的selenium进行一些web抓取。现在,我想选择一个复选框,该复选框具有值为“checked”的“checked”属性,该HTML的部分是:Python 如何选择属性为“的复选框”;勾选“;其价值为;勾选“;使用硒?,python,html,selenium,css-selectors,html-select,Python,Html,Selenium,Css Selectors,Html Select,我目前正在用Python中的selenium进行一些web抓取。现在,我想选择一个复选框,该复选框具有值为“checked”的“checked”属性,该HTML的部分是: 仅自己可见 我尝试使用以下代码,但不起作用: driver.find_element_by_css_selector('input[checked = ""checked""]') 错误消息是: selenium.common.exceptions.InvalidSelectorException: Message
仅自己可见
我尝试使用以下代码,但不起作用:
driver.find_element_by_css_selector('input[checked = ""checked""]')
错误消息是:
selenium.common.exceptions.InvalidSelectorException: Message:
Given css selector expression "input[checked = ""checked""]" is invalid:
InvalidSelectorError: 'input[checked = ""checked""]' is not a valid selector:
"input[checked = ""checked""]"
我首先想知道是否应该将双引号改为单引号,但这也不起作用。
(我不使用其他属性的原因是它们将返回重复的结果,只有“checked”属性对于我想要的复选框是唯一的。)
那么,仍然有选择此属性的解决方案吗
提前谢谢 关于selenium的好处是,您可以保存某些元素的发现并将其存储在变量中,然后执行另一个find_元素请求以进行更深入的挖掘 这是一种过滤元素并获得某些属性的好方法。 我不知道您正在查看的页面的完整HTML代码,但为了便于讨论,在本例中,您可以通过执行以下操作获取您正在查找的属性值:
from selenium import webdriver;
browser = webdriver.Firefox();
browser.get(yourpagehere);
container_element = browser.find_element_by_class_name('private');
target_element = container_element.find_element_by_tag_name('input');
grab_attribute = target_element.get_attribute('checked');
通过执行以下操作,我们首先获取包含我们希望作为其属性目标的元素的主元素。
此元素的类名为private
一旦我们将该元素存储在一个名为container_element的变量中,我们就可以对刚刚保存的元素执行另一个find element搜索,并使用输入标记获取其子元素,然后将其存储到另一个名为target_element的变量中
最后,我们现在可以通过调用target\u element.get\u attribute(attributehere)来访问该元素及其所有属性
这似乎总是对我有用
希望这有帮助 HTML无效。替罪羊可能无法应付。解析器可能会首先将其视为
checked=”“
,然后将其视为checked”“
,这是不好的。因此,解决方案是首先尝试使HTML处于工作状态。如果无法做到这一点,请祈祷刮板已将checked
属性的值解析为“
@MrLister您的意思是checked=”“checked”“
部分无效吗?是的,这是无效部分。如果我将其粘贴到HTML文件中,并在浏览器中查看生成的DOM,它会显示
@MrLister我得到了它!因此,也许我可以根据解析器看到的情况尝试使用input[checked=”“]
。非常感谢您的回答,只是在我的机器上尝试了一下,如果页面有该复选框,它将返回一个u'true'
。这个方法真的很有用!!只是好奇,为什么值“checked”被两层引号包围??那是个错误吗?是的,不应该是。没有办法认为它是正确的。@李斯特先生,但有趣的是……这是一个真实的网站,复选框工作得很好,这就是为什么我觉得它很奇怪。@lleiou可能是因为所有浏览器都以大致相同的方式处理它:他们首先看到checked=“
,它设置选中的
属性,然后设置选中的“
,这将作为错误被丢弃。最终结果是一样的。