Python +selenum 自动化获取的网页不是 js 渲染之后的

2018-07-10 17:08:41 +08:00
 xuegj1010

用 selenium 请求网页,登陆之后返回的是一段 js,并不是渲染之后的页面,body 里面一个元素都没有,请问该怎么解决 下面是返回的源码

<HTML><HEAD>
<SCRIPT src="/prpall/common/pub/UICommon.js"></SCRIPT>

<SCRIPT language=javascript>


    var riskCodeCount = 291;
    var riskCodes = new Array();

	  riskCodes[0] = new Array('01', '0101', '财产基本保险');

	  riskCodes[1] = new Array('01', '0102', '财产综合保险');

	  riskCodes[2] = new Array('01', '0104', '财产一切险');


    var classCodeArrays = new Array();

	  classCodeArrays[0] = new Array('01', '企业财产保险');

	  classCodeArrays[1] = new Array('02', '货运保险');

	  classCodeArrays[2] = new Array('03', '普通家财保险');



  	var comCodeArrays = new Array() ;

            comCodeArrays[0] = new Array('2320000000', '江苏分公司');

            comCodeArrays[1] = new Array('2320100000', '南京分公司');

            comCodeArrays[2] = new Array('2320101000', '南京市江宁支公司');


  try
  {
    parent.document.frames("fraTitle").loadPageForSubmit(riskCodeCount,riskCodes,'01');

    parent.document.frames("fraTitle").loadClassForm(14,classCodeArrays);
    parent.document.frames("fraTitle").loadComCode(comCodeArrays);

    parent.document.frames("fraTitle").setTitleInfo("王婧嫣","江苏分公司","0101");
    parent.document.frames("fraTitle").setOptionClassCode("01");

    parent.document.frames("fraTitle").setOptionRiskCode("0101");
    parent.document.frames("fraTitle").setOptionComCode(2320000000);
    parent.document.frames("fraTitle").controlShow(false,true);



    top.fraTop.rows = "0,0,82,*";
    if(1==0)
    {
      parent.document.frames("fraTitle").setComCode("2320000000");
      parent.document.frames("fraTitle").spanCom.style.display = "";
      parent.document.frames('fraTitle').spanComCode.style.display = "none";
      parent.document.frames('fraTitle').spanComCode1.style.display = "none";
    }
    else
    {
      parent.document.frames("fraTitle").spanCom.style.display = "none";
    }
    var strTemp = "<img class=button name='menuPowerImage' src='/prpall/common/images/butHide.gif' onClick='showHideFrame();'>";
    parent.document.frames('fraTitle').spanMenuPowerImage.innerHTML = strTemp;
    if(parent.fraSet.cols=="0%,*")
    {
      parent.document.frames('fraTitle').showHideFrame();
    }

    parent.fraRight.cols = "*";
    parent.fraRight.rows = "100%,0%,*";
    //非车险的 UICodeGet.jsp
    parent.fraCode.window.location = "/prpall/commonship/pub/UICodeGet.jsp"; //用 commship 下面的 codeget
    parent.fraMenu.window.location = "/prpall/commonship/pub/UIMenuShip.jsp";

  }
  catch(e)
  {
  }
</SCRIPT>
</HEAD>
<BODY></BODY></HTML>
2199 次点击
所在节点    程序员
16 条回复
xuegj1010
2018-07-10 17:17:06 +08:00
代码太长了截取了一部分,请问这段代码是什么意思,怎样才能获取我想要的 dom 元素呢?
gitopen
2018-07-10 18:06:18 +08:00
用 selenium 把滚动条拖到页面最底部,页面就渲染了
xuegj1010
2018-07-10 18:13:07 +08:00
@gitopen 没有滚动条啊
jimmyczm
2018-07-10 18:50:18 +08:00
js 加密貌似就会这样
ex2vkf
2018-07-10 19:17:48 +08:00
用 scrapy-splash
xuegj1010
2018-07-10 20:34:52 +08:00
@jimmyczm 公司自己的系统,给自己用的,没有必要加密吧?明天去问问开发。项目刚启动就就掉坑里了,呵呵
xuegj1010
2018-07-10 20:42:56 +08:00
@ex2vkf 亲,不是写爬虫啊,自动化测试,splash 不好用吧
xiaqi
2018-07-11 07:47:57 +08:00
看上面代码,应该是个 iframe。



你用的哪个 driver ?
用 chrome 或 firefox 应该不会有问题呀。
xuegj1010
2018-07-11 10:38:52 +08:00
@xiaqi 公司的项目比较老,只能在 ie 上面跑,所以用的是 IEDriverServer.exe 和 phantomjs.exe ,最终是要用 phantomjs.exe ,这两个驱动返回的结果都是上面的 js。所以比较郁闷。这段代码应该是会生产一个用于操作的菜单,ie 浏览器中可以显示,但是我用 selenium 看不到 frame。。。
xuegj1010
2018-07-11 10:39:58 +08:00
@xiaqi 用不了 chrome 和 firefox
xiaqi
2018-07-11 21:33:55 +08:00
@xuegj1010 额,这样好像不是很好讨论,来我群:717924460
xuegj1010
2018-07-12 10:06:21 +08:00
@xiaqi 已加,麻烦同意一下
xuegj1010
2018-07-12 10:14:08 +08:00
![avatar]( https://note.youdao.com/yws/api/personal/sync ? method=download&fileId=WEB1d79c8da188730ba773fe359955cad99&version=2640&cstk=bOiTnvTt)
xuegj1010
2018-07-12 10:16:59 +08:00
xuegj1010
2018-07-12 10:19:26 +08:00
上面的图片好像可以用,登陆前后用 F12 查看 html 结构是一样的,但是用 selenium 请求回来的页面却是上面的 js 代码。请问该怎么解决?
xuegj1010
2018-07-12 12:44:31 +08:00
问题已经解决,登陆之后需要切换一下,driver.switch_to.default_content()就可以找到对应的页面了,感谢各位的回答。谢谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/469653

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX