我试图用硒刮网页。通过检查页面和右键单击建议的xpath是不稳定的类型(/ html / body / table [2] / tbody / tr [1] / td / form / table / tbody / tr [2])。所以我尝试了以下解决方案:
driver = webdriver.Chrome("path")
driver.get("https://www.bundesfinanzhof.de/entscheidungen/entscheidungen-online")
time.sleep(1)
links=driver.find_element_by_xpath('//tr[@class="SuchForm"]')
甚至
links=driver.find_elements_by_xpath('//*[@class="SuchForm"]')
不要返回任何结果。但是在页面的早期我可以获得:
links=driver.find_element_by_xpath('//iframe')
links.get_attribute('src')
似乎之后:
<script language="JavaScript" src="/rechtsprechung/jscript/list.js" type="text/javascript"></script>
我再也无法找到任何元素了。 How do I determine the correct XPath? 表明脚本中的部分无法解析。然而,我所追寻的道路似乎不在我的道路之内。我是否误解了脚本在页面上的工作方式?
例如,稍后会有一条路径:
/html/body/table[2]/tbody/tr[1]/td/script
我希望这会产生这样的问题。我绝不是程序员,所以我对这个主题的理解是有限的。有人可以解释问题是什么,如果可能的解决方案吗?
尝试使用以下解决方案:
Find element text using xpath in selenium-python NOt Working
答案 0 :(得分:1)
$(document).ready(function() {
init();
var clickMe = $("#clickme");
function init() {
setTimeout(function() {
clickMe.off("click").on("click", function() {
$("#output").append(".");
})
}, 100)
}
$("#recall").click(function() {
init();
});
})
位于table
内,因此您需要在处理所需的iframe
之前切换到iframe
:
tr
使用from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.get("https://www.bundesfinanzhof.de/entscheidungen/entscheidungen-online")
wait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@src='https://juris.bundesfinanzhof.de/cgi-bin/rechtsprechung/list.py?Gericht=bfh&Art=en']")))
link = driver.find_element_by_xpath('//tr[@class="SuchForm"]')
切换回driver.switch_to.default_content()