当前位置: 首页 > news >正文

如何做好一个购物网站做家政公司网站

如何做好一个购物网站,做家政公司网站,二级建造师证怎么考,移动云服务器背景由于要爬取的页面#xff0c;每个链接的请求都是点击之后js动态发起的#xff0c;目标数据也多是js动态生成的#xff0c;所以使用selenium工具webdriver(调试用的是chrome#xff0c;具体使用准备用phantomjs).模拟登录之后#xff0c;模拟查询之后#xff0c;得到如…背景由于要爬取的页面每个链接的请求都是点击之后js动态发起的目标数据也多是js动态生成的所以使用selenium工具webdriver(调试用的是chrome具体使用准备用phantomjs).模拟登录之后模拟查询之后得到如下列表可以看到链接是不能直接拿到的。接下去步骤是这样的得到链接的集合遍历集合点击链接得到对应的详情页面通过页面句柄转到详情页面拿到目标数据再转回父页面如上继续遍历问题按照如上逻辑在执行到遍历步骤的时候在第二次时报错了。第一种报错org.openqa.selenium.StaleElementReferenceException: stale elementreference: element is not attached to the page document我的代码// 获取查询按钮WebElement queryBtn driver.findElement(By.ByXPath.xpath(//*[id\mainContent\]/form/div[3]/div[13]/button[1]));// jse.executeScript(arguments[0].scrollIntoView(), queryBtn);scrollToElementAndClick(queryBtn);Thread.sleep(500); // 等待加载driver.manage().window().maximize();driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);int pageIndex Integer.parseInt(driver.findElement(By.xpath(//*[id\mainContent\]/div[2]/div[2]/div[1]/table/tfoot/tr[2]/td/div/ul/li[1]/span/font[3])).getText());int pageSize Integer.parseInt(driver.findElement(By.xpath(//*[id\mainContent\]/div[2]/div[2]/div[1]/table/tfoot/tr[2]/td/div/ul/li[1]/span/font[2])).getText());// Actions actions new Actions(driver);while (pageIndex pageSize) {pageIndex;WebElement tbody driver.findElement(By.ByXPath.xpath(//*[id\mainContent\]/div[2]/div[2]/div[1]/table/tbody));List links tbody.findElements(By.cssSelector(a[classng-binding]));for (WebElement link : links) {WebDriver window;System.out.println(-------------- voucherNo: link.getText());scrollToElementAndClick(link);// jse.executeScript(arguments[0].scrollIntoView(), link);// Thread.sleep(1000);// actions.moveToElement(link).click().perform();currentWindow driver.getWindowHandle();//get all windowsSet handles driver.getWindowHandles();for (String s : handles) {//current page is dont closeif (s.equals(currentWindow) || s.equals(parentWindow))continue;else {window driver.switchTo().window(s);window.manage().window().maximize();window.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);window.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);//get all tablesString pageSource window.getPageSource();String jsonArray parseDTO(pageSource);System.out.println(jsonArray);//close the table windowwindow.close();}//swich to current windowdriver.switchTo().window(currentWindow);}}// click next pageif (pageIndex pageSize) {WebElement nextPage driver.findElement(By.xpath(//*[id\mainContent\]/div[2]/div[2]/div[1]/table/tfoot/tr[2]/td/div/ul/li[3]/a));scrollToElementAndClick(nextPage);//set next page to current pagedriver driver.switchTo().window(driver.getWindowHandle());driver.manage().window().maximize();driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);}}我在stackoverflow上面查到过类似问题也去官网上面看到了对应报错的解释原因应该是我在跳转到子页面的时候父页面进行的刷新虽然在ui上面还能到那些链接但是集合里面的链接是原先定义的和遍历一次之后回来的父页面对应不上了。(我是这么理解的如果我理解错了请大神指出)。然后我就按照官方的建议每次页面去页面上拿链接而不是从原先定义的链接集合中拿。先说明每个链接的xpath都是有规律的如//*[idmainContent]/div[2]/div[2]/div[1]/table/tbody/tr[1]/td[2]/a//*[idmainContent]/div[2]/div[2]/div[1]/table/tbody/tr[2]/td[2]/a//*[idmainContent]/div[2]/div[2]/div[1]/table/tbody/tr[3]/td[2]/a//*[idmainContent]/div[2]/div[2]/div[1]/table/tbody/tr[%s]/td[2]/a这是我第二次的代码while (pageIndex pageSize) {pageIndex;WebElement tbody driver.findElement(By.ByXPath.xpath(//*[id\mainContent\]/div[2]/div[2]/div[1]/table/tbody));List links tbody.findElements(By.cssSelector(a[classng-binding]));int size links.size();for (int i 1; i size; i) {String href String.format(//*[id\mainContent\]/div[2]/div[2]/div[1]/table/tbody/tr[%s]/td[2]/a, i);WebElement link driver.findElement(By.xpath(href));WebDriver window;System.out.println(-------------- voucherNo: link.getText());scrollToElementAndClick(link);currentWindow driver.getWindowHandle();//get all windowsSet handles driver.getWindowHandles();for (String s : handles) {//current page is dont closeif (s.equals(currentWindow) || s.equals(parentWindow))continue;else {window driver.switchTo().window(s);window.manage().window().maximize();window.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);window.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);//get all tablesString pageSource window.getPageSource();String jsonArray parseDTO(pageSource);System.out.println(jsonArray);//close the table windowwindow.close();}//swich to current windowdriver.switchTo().window(currentWindow);}}// click next pageif (pageIndex pageSize) {WebElement nextPage driver.findElement(By.xpath(//*[id\mainContent\]/div[2]/div[2]/div[1]/table/tfoot/tr[2]/td/div/ul/li[3]/a));scrollToElementAndClick(nextPage);//set next page to current pagedriver driver.switchTo().window(driver.getWindowHandle());driver.manage().window().maximize();driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);}}这次报了第二种错误Caused by: org.openqa.selenium.NoSuchElementException: {errorMessage:Unable to find element with xpathEmm...试了很多种办法都没有用希望有大神能救救我万分感谢
http://www.pierceye.com/news/859360/

相关文章:

  • 做电影网站还能赚钱云南网站建设哪家公司好
  • 重庆定制网站开发什么是网络营销战略
  • 网站建设硬件方案精准客源app
  • 网站视觉优化怎么做电子商务网站建设参考文献2018
  • 服务器可以吧网站做跳转吗wordpress 远程图片本地化
  • 网站在线访谈栏目建设个人网站可以备案了吗
  • 汉口北做网站搜索广告是什么
  • 电商网站可以用dw做嘉兴网站建设平台
  • 做网站是数据库应该放在哪里建筑工程水平防护网
  • vps网站无法通过ip访问网站怎么做的支付宝接口
  • 怎么创建一个博客网站网站的c4d动画是怎么做的
  • 西安做企业网站科技论文发表网
  • html 手机网站开发企业做网站的合同
  • 建立wordpress网站吗全州建设完小网站
  • 网站域名注册证书是什么制作WordPress友情链接
  • 如何在解决方案中新建网站html网页制作的软件下载
  • 企业网站怎么做优化开小加工厂去哪接单子
  • 网站建设推广费怎么做账域名和网站绑定
  • 商丘网站建设想象力网络中国流量最大的网站排行
  • 网站是否有备案网站集约化建设建议
  • 浏览器收录网站网上做图赚钱的网站
  • 网站建设优化过程中的优化策略相关文章 wordpress
  • 泉州网站深圳航空公司官网首页
  • 百度推广整体优化网站整体软装设计公司
  • 太原搜索引擎优化招聘信息服务好的镇江网站优化
  • 自己做网站下载怎么网站基础知识域名5个点
  • 网站搭建合作协议wordpress注册页面插件
  • 网络公司最好的是哪个兰州网络推广优化怎样
  • 网站文章采集工具新网站怎么做流畅
  • discuz 手机网站模板山东省住房建设厅网站首页