假设一个网站有以下结构
Link1 -> Huge Sublinks (Example Link11, Link12,...) -> Link 11 -> Huge Sub
Links (Example Link 111, Link 112..... ) -> Link 111 -> Huge Sub Links
(Example Link 1111, Link 1112.....)
Link2 -> Huge Sublinks (Example Link21, Link22,...) -> Link 21 -> Huge Sub
Links (Example Link 211, Link 212..... ) -> Link 211 -> Huge Sub Links
(Example Link 2111, Link 2112.....)
类似地,链接3,链接4
现在我需要遍历每个链接Link1,Link2,Link3,Link4来提取最后一页上没有后续链接递归存在的内容。
但目前递归不起作用,它抛出
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
由于当前页面不同,无法保留旧元素信息,并且页面已移动到新页面,因此会引发错误。
递归搜索内容的最佳方法是什么???
示例代码段:
public static void visitChildPages(String webSite) {
driver.get(webSite);
List<WebElement> liElements =
driver.findElementsByClassName("company");
for(WebElement liElement : liElements) {
List<WebElement> childs = liElement.findElements(By.xpath(".//*"));
for(WebElement childEl : childs) {
link = childEl.getAttribute("href");
if(StringUtils.isNotBlank(link) && link.contains("http")) {
visitChildPages(link);
} else {
WebElement todaysClimate = childEl.findElement(By.id("ceoName"));
}
}
}
}
最简单的方法是
每当url发生更改时,我们需要使用url创建hashmap。
假设我们必须从第一页导航10个URL,我们将有10个哈希映射。
它运行良好,但如果需要,需要尝试上述软件。
看看你的情况,像可加载组件这样的模式可能只是一个临时解决方案。它保持跨所有Page对象的页面导航逻辑。
如果您只需要一些页面内容,您可以直接导航到页面URL。但这又是一个局部解决方案。
递归搜索内容的方法
可能是像Xenu这样的URL遍历工具和像JSoup这样的解析器的组合。您可以通过第一个链接导出找到和访问过的链接,并将收藏传递给第二个链接,这将在所有其他链接中验证您的确切页面。
递归互斥量(Recursive Mutexes)是互斥量的一个特例,与互斥量基本完全相同,除了: 递归互斥量可以由拥有者多次获取,但是也要求拥有者释放相同次数。比如,一个递归互斥量被获取了5次,那么同样需要释放5次。
我需要刮http://www.vintagetoday.be/fr/montres但它有动态内容。 我该怎么做呢? 从bs4导入请求导入美丽汤t=requests.get("vintagetoday.be/fr/catalogue.awp"). text print(len(美丽汤(t,"lxml"). findAll("td",{"class":"Lien2"}))
我对函数式编程很陌生,尤其是下面使用的Scheme。我正在尝试使以下函数是递归的,尾递归的。基本上,该函数的作用是对两个字符串的对齐方式进行评分。当给定两个字符串作为输入时,它会比较每个“列”字符,并根据在称为 scorer 的函数中实现的评分方案(由下面的代码中的函数调用)来累积该对齐的分数。 我有一个想法,用一个帮助函数来累积分数,但我不太确定如何去做,因此我该如何让下面的函数尾递归呢?
null null 对上述重试功能执行以下测试。 总是传递一个承诺进行解析,重试函数在第一次执行时解析/li> 我以为写这些开玩笑的时候会是这样的。 因此,它失败,出现以下错误。 我认为,这将是可以管理的设置在笑话关于这个错误。但是,从根本上说,我不知道如何在Jest中测试promise递归处理。
我写了下面的代码来反转链表的前K个节点,它在反转链表的前K个节点时解决了一些问题,为什么递归在最后一次迭代中执行两次,现在它可以正常工作,但为什么它会导致链表中的循环当我尝试在“if”条件下使用变量“k”而不是“PresCouner”时,原因是什么?以及如何避免它?
对于二进制搜索树,我只能访问根节点,而我正在尝试编写一个递归方法来挖掘其左节点。 例如 root.left(); 成为 根左()。左(); 然后, 根左()。左(); 你看这是怎么回事...有没有递归的方法来更改/添加到变量中?