Python +selenum 自动化获取的网页不是 js 渲染之后的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xuegj1010
V2EX    程序员

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

  •  
  •   xuegj1010 2018-07-10 17:08:41 +08:00 2581 次点击
    这是一个创建于 2717 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    <HTML><HEAD> <SCRIPT src="http://www.v2ex.com/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='http://www.v2ex.com/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> 
    16 条回复    2018-07-12 12:44:31 +08:00
    xuegj1010
        1
    xuegj1010  
    OP
       2018-07-10 17:17:06 +08:00
    代码太长了截取了一部分,请问这段代码是什么意思,怎样才能获取我想要的 dom 元素呢?
    gitopen
        2
    gitopen  
       2018-07-10 18:06:18 +08:00 via Android
    用 selenium 把滚动条拖到页面最底部,页面就渲染了
    xuegj1010
        3
    xuegj1010  
    OP
       2018-07-10 18:13:07 +08:00
    @gitopen 没有滚动条啊
    jimmyczm
        4
    jimmyczm  
       2018-07-10 18:50:18 +08:00
    js 加密貌似就会这样
    ex2vkf
        5
    ex2vkf  
       2018-07-10 19:17:48 +08:00 via iPhone
    用 scrapy-splash
    xuegj1010
        6
    xuegj1010  
    OP
       2018-07-10 20:34:52 +08:00
    @jimmyczm 公司自己的系统,给自己用的,没有必要加密吧?明天去问问开发。项目刚启动就就掉坑里了,呵呵
    xuegj1010
        7
    xuegj1010  
    OP
       2018-07-10 20:42:56 +08:00
    @ex2vkf 亲,不是写爬虫啊,自动化测试,splash 不好用吧
    xiaqi
        8
    xiaqi  
       2018-07-11 07:47:57 +08:00 via Android
    看上面代码,应该是个 iframe。



    你用的哪个 driver ?
    用 chrome 或 firefox 应该不会有问题呀。
    xuegj1010
        9
    xuegj1010  
    OP
       2018-07-11 10:38:52 +08:00
    @xiaqi 公司的项目比较老,只能在 ie 上面跑,所以用的是 IEDriverServer.exe 和 phantomjs.exe ,最终是要用 phantomjs.exe ,这两个驱动返回的结果都是上面的 js。所以比较郁闷。这段代码应该是会生产一个用于操作的菜单,ie 浏览器中可以显示,但是我用 selenium 看不到 frame。。。
    xuegj1010
        10
    xuegj1010  
    OP
       2018-07-11 10:39:58 +08:00
    @xiaqi 用不了 chrome 和 firefox
    xiaqi
        11
    xiaqi  
       2018-07-11 21:33:55 +08:00 via Android
    @xuegj1010 额,这样好像不是很好讨论,来我群:717924460
    xuegj1010
        12
    xuegj1010  
    OP
       2018-07-12 10:06:21 +08:00
    @xiaqi 已加,麻烦同意一下
    xuegj1010
        13
    xuegj1010  
    OP
       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
        15
    xuegj1010  
    OP
       2018-07-12 10:19:26 +08:00
    上面的图片好像可以用,登陆前后用 F12 查看 html 结构是一样的,但是用 selenium 请求回来的页面却是上面的 js 代码。请问该怎么解决?
    xuegj1010
        16
    xuegj1010  
    OP
       2018-07-12 12:44:31 +08:00
    问题已经解决,登陆之后需要切换一下,driver.switch_to.default_content()就可以找到对应的页面了,感谢各位的回答。谢谢。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2867 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 14:15 PVG 22:15 LAX 06:15 JFK 09:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86