在一个页面的div中加载出另一个页面的div内容
 页面一的内容:
<div id="result"></div>
<script>
      document.getElementById("result").innerHTML = "用户代码:" ;
</script>

页面二的内容:
<div id="box"></div>

想将    result    里的内容加载到    box    里面

2个回答

这2个页面什么关系,没有关系要通过服务器端来做,有关系看这个:iframe和父页,window.open打开页面之间的引用

  • <html>
  • <div id="box">
  • <iframe src="页面1.html">
  • </div>
  • </html>

//注意:页面1如果和页面在同一文件下,路径src可直接按我给的事例来写,如果不是,那么src=”相对路径/页面1.html“

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用Jquery在一个jsp页面的一个div中异步加载子页面的问题
请先看代码: A页面的代码: <html> <head> <script type="text/javascript" src="js/jquery-1.7.2.js"></script> <script type="text/javascript" src="ab.js"></script> </head> <body> <input type="button" value="点我" id="a"> <div id="cont"></div> </body> </html> ad.js文件代码: $(function(){ alert("A页面"); $("#a").click(function(){ alert(加载B页面); $.load("B.jsp"); }); $("#b").click(function(){ alert("点我有反映"); }); }); B页面的代码: <script type="text/javascript" src="js/jquery-1.7.2.js"></script> <script type="text/javascript" src="ab.js"></script> <h1>我是B页面</h1> <input type="button" value="点不动" id="b"> 问题1:进入A页面的时候执行了alert("A页面")(这是正常的); 然后第一次点击 A页面的按钮,执行了一次{alert("A页面");alert(加载B页面);},B页面显示成功,B页面的按钮也能点。然后第二次点击A页面的按钮,{alert("A页面");alert(加载B页面);}连续执行了2次,B页面也加载了。第三次点击A页面的按钮,{alert("A页面");alert(加载B页面);}执行了4次,。。。往后B页面的加载就会越来越慢。感觉好像点击事件在不断的累积一样。求解? 问题2:我针对上面的问题,我把B页面的JS加载给去掉,或者把B页面的按钮点击事件响应写到另一个JS文件中去。这样的话我在B页面的按钮就点不动了, 我的目的是点击A页面的按钮,能加载B页面进来(不刷新A页面),同时B页面的按钮也同样可以执行点击事件(但是不要出现问题1的现象)。 真心求解 啊
div覆盖问题,div如何不被另一个div覆盖
MVC项目View中,现在有2个div,Div1和Div2 Div1是在页面一刷新的时候就会加载的 Div2是在js中执行初始化脚本时,append方法添加的 由于这两个div挨得近,所以Div2会覆盖住Div1(因为html加载好后,在执行的js中append方法,直接覆盖了html原有的位置的Div2) 我想要的效果是Div1在上面,也就是Div1覆盖Div2. 求解决方案!
jsp页面关于异步加载问题
JSP页面中使用jQuery的load()方法加载入另一个JSP页面,发现一个很奇怪的问题,如果不传参过去页面就无法显示,以下是我没带参数的jQuery代码: $(document).ready(function() { $("#rightitem").load("selorder.jsp"); }); rightitem是显示selorder.jsp的div的id,本页面和selorder.jsp是在同一目录里,求大神帮忙看一下哪里有问题。
ajax发个异步请求的时候 调用一个div显示 数据正在加载中 ……”,接收到请求的时候 关闭div,显示另一个div;求这句话的相关代码
:lol:
一个jsp页面调用另一个页面并改变框架地址
Web目录下有两个页面,a.jsp与b.jsp b.jsp里有一个iframe框架,id是rightcontent 我想在a.jsp页面用js方法调用b.jsp,并改变iframe框架的url; 下面代码在本地测试可用,上传至服务器就不行了,js错误提示document.getElementById("...")为空或不是对象 不知是因为b.jsp页面打开还未加载到iframe还是怎么回事,如果是的话又能不能在a.jsp的js方法里判断b.jsp已经加载完成了呢 a.jsp页面js方法 function veer(url){ var o=window.open("jsp/b.jsp"); o.document.getElementById("rightcontent").src=url; } b.jsp页面iframe框架 <div class="right"> <iframe name="rightcontent" id="rightcontent" scrolling="no" frameborder="0" width="100%" heigth="797" src="product.do?pa=loads&url=index1"></iframe> </div> 只有5分,望各位解决下,谢谢。
现在要实现更新功能,怎么将本页面的值带到另外一个新的页面??急急急。。。求大神指点。。
![图片说明](https://img-ask.csdn.net/upload/201712/28/1514441917_897811.png) ![图片说明](https://img-ask.csdn.net/upload/201712/28/1514442367_525718.png) ![图片说明](https://img-ask.csdn.net/upload/201712/28/1514442379_890612.png) ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>炼钢成分分析</title> <meta charset="utf-8"> <title>炼钢成分分析</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="css/bootstrap.min.css"> <script src="js/bootstrap.min.js"></script> <script src="js/jquery-3.2.1.min.js"></script> <style> body { position: relative; } #section1 {padding-top:50px;height:700px;color: black; background-color: white;} #section2 {padding-top:50px;height:500px;color: black; background-color: white;} </style> <script type="text/javascript"> //出现本页面数据就同步显示在表格中 $(function(){ TSM_QPM_Q001(); }); //进行一个函数的调用 function TSM_QPM_Q001(){ $.ajax({ url:"http://localhost:8080/MESS/getData", type:"get", datatype:"json", success:function(res){ var htmlStr =''; for(var i=0;i < res.length;i++){ var plo = res[i].proNo; //var wkStationNo = res[i].wkStationNo; htmlStr += '<tr id="myLine_'+res[i].proNo+'">'; htmlStr += '<td><input type="checkbox" id="TQQ" name="chkItem" value ="'+plo+'"></td>'; htmlStr += '<td>'+res[i].proNo+'</td>'; htmlStr += '<td>'+res[i].wkStationNo+'</td>'; htmlStr += '<td>'+res[i].stGrdNo+'</td>'; htmlStr += '<td>'+res[i].cItemName+'</td>'; htmlStr += '<td>'+res[i].cItemValue+'</td>'; htmlStr += '<td>'+res[i].wkGroup+'</td>'; htmlStr += '<td>'+res[i].wkShift+'</td>'; htmlStr += '<td>'+res[i].delFlage+'</td>'; htmlStr += '<td>'+res[i].c_memd+'</td>'; htmlStr += '<td>'+res[i].c_delsapman+'</td>'; htmlStr += '<td>'+res[i].cDelsapdate+'</td>'; htmlStr += '<td>'+res[i].cTimestamp+'</td>'; htmlStr += '<td>'+res[i].cSampleTime+'</td>'; htmlStr += '<td>'+res[i].cSw01+'</td>'; htmlStr += '<td>'+res[i].cMin+'</td>'; htmlStr += '<td>'+res[i].cMax+'</td>'; htmlStr += '<td>'+res[i].l_interval+'</td>'; htmlStr += '<td>'+res[i].r_interval+'</td>'; //htmlStr += '<a href="javascript:del('+res[i].id+')">删除</a>'; htmlStr += '</tr>'; } $("#myLine").html(htmlStr); }, error:function(){ alert("出错了!"); } }); } //删除功能 $(function(){ var del; $("#dell").click(function(){ $("input:checkbox:checked").each(function(index,element){ del = $("input:checkbox[name='chkItem']:checked").map(function(index,elem) { return $(elem).val(); }).get().join(','); }) alert(del); $.ajax({ url:"http://localhost:8080/MESS/Q001_del_delete", type:"post", dataType:"json", data:{"proNo":del}, success:function(rs){ if(rs.status == 0){ alert(rs.msg); //为什么就是隐藏不了呢? $("input:checkbox:checked").hide() TSM_QPM_Q001(); }else{ alert(rs.msg); TSM_QPM_Q001(); } }, error:function(){ alert("删除加载失败 "); } }); }); }); </script> </head> <body data-spy="scroll" data-target=".navbar" data-offset="50"> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container-fluid"> <div> <div class="collapse navbar-collapse dropdown" id="myNavbar"> <ul class="nav navbar-nav"> <li><a href="#section1">氩站监控图</a></li> <li><a href="#section2">吹氩实绩</a></li> <li><a href="#section3">吹氩运转</a></li> </ul> </div> </div> </div> </nav> <div id="section2" class="container-fluid"> <h1 class="bg-info text-muted">吹氩实绩</h1> <div class="row clearfix"> <div class="col-md-12 column"> <div class="row clearfix"> <div class="col-md-12 column"> <div style="display:inline-block;"> <a href="TiaoJianselect.jsp"><button class="btn btn-primary btn-lg btn-sm" data-toggle="modal" data-target="#update_CR" id="CHAXUN">查询</button></a> <a href="addTSM_QPM_Q001.jsp"><button class="btn btn-primary btn-lg btn-sm" data-toggle="modal" data-target="#update_CR">添加</button></a> <button class="btn btn-primary btn-lg btn-sm" data-toggle="modal" data-target="#update_CR" id="dell">删除</button> <a href="update.jsp?proNo=res[i].proNo"><button class="btn btn-primary btn-lg btn-sm" data-toggle="modal" data-target="#update_CR" id="updateCR">修改</button></a> </div> </div> </div> <h3 class="bg-info text-muted">炼钢成分标准表</h3> <div style="height:280px;border:1px solid green; overflow:auto;"> <table class="table table-condensed table-hover table-bordered table-responsive text-center"> <thead> <tr> <th>操作</th> <th>工序号</th> <th>作业站号</th> <th>钢种号</th> <th>检验项目名称</th> <th>检验值</th> <th>班组</th> <th>班次</th> <th>删除标识</th> <th>备注</th> <th>删除人</th> <th>删除时间</th> <th>时间戳</th> <th>取样时间</th> <th>扩展字段</th> <th>最小值</th> <th>最大值</th> <th>左区间</th> <th>右区间</th> </tr> </thead> <tbody id="myLine"> <!-- <tr> <td><input type="button" value="删除" onclick=""><input type="button" value="修改" onclick=""></td> </tr> --> </tbody> </table> </div> </div> </div> </body> </html> ``` 如本图,我要实现一个修改功能,所以需要将选中复选框的这一行数据在另外一个页面显示出来,但是我现在的问题是想上述的代码中我这个修改的按钮所携带的数据在另一个页面上是无效的。。。。怎么将这个页面的数据带到另外一个页面?? 先在携带的数据是在上面的ajax里面获取的数据好像没有获取到。。。
关于EXT的Panel值autoLoad配置项的问题?
<p>学习EXT过程中遇到个问题,急需解决,忙了一天了,都没找到方法!<br>简单描述下我的情况:</p> <p>     Viewport左边是accordion布局的两个panel,第一个panel是个tree</p> <p>     Viewport右边是一个id为content-panel的panel用于显示tree的页面</p> <p>     contentpanel的item配置项里放着若干panel(这些panel是通过autoLoad加载其它页面进来的,并且这些页面都有js文件)</p> <p> </p> <p>     说道这儿相信大家知道我的问题了:</p> <p> </p> <div class="quote_title"> 写道</div> <div class="quote_div">tree.on('click',function(node){<br> if(node.leaf){<br> Ext.getCmp('content-panel').layout.setActiveItem(node.id + '-panel');<br> }<br> });</div> <p>    这边firebug回报错:</p> <p>                               <span style="color: #ff0000; font-size: small;">Ext.getCmp('content-panel')未定义</span></p> <p>    当然要说明的是autoLoad加载html和js正常了,在firebug可以看出了,eclipse终端也看的出来,</p> <p>    我觉得是当加载完另一个js后,在那个js里找id为content-panel的panel那自然是找不到的,所以肯定会报错,请朋友帮我解决这个问题,真的很急切,谢谢...........</p><br /><strong>问题补充:</strong><br />longterm朋友都说js加载正常了,你的建议首先就没看完我的问题 <br /> <br />yourgame朋友你理解错了,简单说就是id为content-panel的panel是在Viewport所在主要js文件中, <br />而autoload加载的几个html,其各个js中定义的panel名放在id为content-panel的panel的item配置项中而已,其实终端看出加载都正常了,但是由于报了个错误导致整个页面无法显示 <br /> <br />如有具体解决办法请给出个例子那会更好!<br /><strong>问题补充:</strong><br />longterm朋友都说js加载正常了,你的建议首先就没看完我的问题 <br /> <br />yourgame朋友你理解错了,简单说就是id为content-panel的panel是在Viewport所在主要js文件中, <br />而autoload加载的几个html,其各个js中定义的panel名放在id为content-panel的panel的item配置项中而已,其实终端看出加载都正常了,但是由于报了个错误导致整个页面无法显示 <br /> <br />如有具体解决办法请给出个例子那会更好!<br /><strong>问题补充:</strong><br />longterm朋友都说js加载正常了,你的建议首先就没看完我的问题 <br /> <br />yourgame朋友你理解错了,简单说就是id为content-panel的panel是在Viewport所在主要js文件中, <br />而autoload加载的几个html,其各个js中定义的panel名放在id为content-panel的panel的item配置项中而已,其实终端看出加载都正常了,但是由于报了个错误导致整个页面无法显示 <br /> <br />如有具体解决办法请给出个例子那会更好!
关于setTimeout
[code="java"]<html> <body> <script type="text/javascript"> document.write("<h1>Hello World!</h1>") document.write("<h1>Hello World!11</h1>") setTimeout("write1()","0"); function write1() { document.write("<h1>Hello World!22</h1>"); } </script> </body> </html> [/code] 为什么write1里边的document.write("<h1>Hello World!22</h1>"); 会覆盖之前的document.write呢,而且显示的Hello World!22是粗体的,这时为什么呢 :oops: [b]问题补充:[/b] [code="java"]<html> <body> <script type="text/javascript"> document.write("<div>111</div>"); document.write("<div>222</div>"); </script> </body> </html> [/code] 这段代码的显示结果是: 111 222 [code="java"]<html> <body> <script type="text/javascript"> document.write("<div>111</div>"); document.write("<div>222</div>"); </script> </body> </html> [/code] [b]问题补充:[/b] [code="java"]<html> <body> <script type="text/javascript"> document.write("<div>111</div>"); document.write("<div>222</div>"); setTimeout("write1()","0"); function write1() { document.write("<h1>333</h1>"); } </script> </body> </html>[/code]这段代码执行的结果是333,并且333的字体和111,222的字体不一样, [b]问题补充:[/b] 按楼下几位所说,[quote]document.write("<div>111</div>"); document.write("<div>222</div>");[/quote]是不是应该只显示222? ,但实际上不是。 [b]问题补充:[/b] lovewhzlq和lt0604 的回答现在明白了(更具体的解释在JavaScript权威指南中文版第五版的303页,15.1动态文档的内容), “在载人页面后,浏览器输出流自动关闭;在此之后,任何一个对当前页面进行操作的document.write()方法将打开—个新的输出流。”和“setTimeout的缘故,产生了异步行为,故覆盖了原来的 ”是一个意思呵呵,:D ,不过延时的document.write的字体为什么是粗的呢? :shock: :D [b]问题补充:[/b] [code="java"]document.write("<div>111</div>"); document.write("<div>222</div>");[/code] div :roll: [b]问题补充:[/b] [code="java"]<html> <body> <script type="text/javascript"> document.write("<div>111</div>"); document.write("<div>222</div>"); setTimeout("write1()","0"); function write1() { [b]document.write("<div>333</div>");[/b] } </script> </body> </html> [/code] 用这段代码试下,333是粗体的~ :shock: :D [b]问题补充:[/b] :!: :!: :!: :!: :!: 分割线 :!: :!: :!: :!: :!: 说明一下: 关[b]于document.write()方法还有一点要说明的是它的相关方法document.close()。脚本向窗口(不管是本窗口或其他窗口)写完内容后.必须关闭输出流。在延时脚本的最后一个document.write()方法后面.必须确保含有document.close()方法,不这样做就不能显示图片和表单。[/b]这个解释有误。 刚看了JavaScript权威指南,document.write一般有两种用法,1.一种是在文档加载的时候,用于想文档写入内容,2.一种用于在另一个窗口中(比如弹出窗口)写入文档。用第二种方法的例子:【注:一下内容来自于JavaScript权威指南第五版】[code="java"]function test() { var w = window.open(); var d = w.document; d.open(); d.write("111"); d.close(); }[/code] 这里因为调用了documetn.open()方法,所以当在文档中的内容写完后,必须要调document.close();,用来说明文档装载完毕,否则,浏览器就不能制止他所显示的文档装在动画。 [b]问题补充:[/b] 我加那个[b]主要就是想让代码粗体显示,就这段代码[code="java"]<html> <body> <script type="text/javascript"> document.write("<div>111</div>"); document.write("<div>222</div>"); setTimeout("write1()","0"); function write1() { document.write("<div>333</div>"); } </script> </body> </html> [/code]为什么333是粗体的, [b]问题补充:[/b] 不是很粗那种粗体,可以试一下[code="java"]<html> <body> <script type="text/javascript"> document.write("<div>111</div>"); </script> </body> </html>[/code]和[code="java"]<html> <body> <script type="text/javascript"> setTimeout("write1()","0"); function write1() { document.write("<div>111</div>"); } </script> </body> </html>[/code]这两段代码的输出字体不一样 [b]问题补充:[/b] “不要说我现实,一个问题一个问题收钱”我才30分 :shock: ,5分都是大出血了! :shock: :shock: :shock: [b]问题补充:[/b] 我这显示的不一样,正常的document.write字体比延迟的细一些,ie8,ff下试的 [b]问题补充:[/b] 结贴了,,字体的问题没啥大不了了,不过就是不清楚为什么字体不一样而已了想弄明白。 :!: :!: :!:
写的jquery插件如何销毁和调用?
插件我自己写的,我一般都是dom加载完毕,就调用插件,现在想点击某个按钮销毁,点击另一个按钮更新再次调用, 请大神说下思路? 比如: $(".div1").changeColor();
Jquery EasyUi 的一个问题
小弟最近在学习Jquery EasyUi,目前发现一个问题,不知道如果解决。 目前有两个页面,a.jsp 和 b.jsp 。其中a.jsp中只有一个下拉菜单,用浏览器单独访问a.jsp的时候,是可以正常显示的,请看a.jsp的部分代码: [code="java"] <script type="text/javascript"> jQuery(function($){ $('#cc').combogrid({ panelWidth:450, value:'006', idField:'code', textField:'name', url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',width:60}, {field:'name',title:'Name',width:100}, {field:'addr',title:'Address',width:120}, {field:'col4',title:'Col41',width:100} ]] }); }); </script> <body> 下拉菜单:<select id="cc" name="dept" style="width:450px;"></select> </body> [/code]。 b.jsp中有一个window,window的href为a.jsp,在b.jsp中不能够正常显示a.jsp的下拉菜单,请看b.jsp中的部分代码: [code="java"] <script type="text/javascript"> $(function(){ $('#win').window({ width:600, height:400, href:'a.jsp' }) }); </script> <body> <div id="win" iconCls="icon-save" title="My Window"> Window Content </div> </body> [/code] 小弟查询之后,发现是b.jsp的window在显示a.jsp时,a.jsp中页面加载的时候调用的初始化语句块没有调用成功,具体的没有调用的a.jsp的代码为[code="java"] jQuery(function($){ ........ }) [/code] 不知道为什么会出现这种问题,难道一个页面被另一个页面用href引用之后就不能调用自身的初始化语句块了吗?
Scrapy爬取下来的数据不全,为什么总会有遗漏?
本人小白一枚,刚接触Scrapy框架没多久,写了一个简单的Spider,但是发现每一次爬取后的结果都比网页上的真实数据量要少,比如网站上一共有100条,但我爬下来的结果一般会少几条至几十条不等,很少有100条齐的时候。 整个爬虫有两部分,一部分是页面的横向爬取(进入下一页),另一个是纵向的爬取(进入页面中每一产品的详细页面)。之前我一直以为是pipelines存储到excel的时候数据丢失了,后来经过Debug调试,发现是在Spider中,数据就遗漏了,def parse函数中的item数量是齐的,包括yield Request加入到队列中,但是调用def parse_item函数时,就有些产品的详细页面无法进入。这是什么原因呢,是因为Scrapy异步加载受网速之类的影响么,本身就有缺陷,还是说是我设计上面的问题?有什么解决的方法么,不然数据量一大那丢失的不是就很严重么。 求帮助,谢谢各位了。 ``` class MyFirstSpider(Spider): name = "MyFirstSpider" allowed_doamins = ["e-shenhua.com"] start_urls = ["https://www.e-shenhua.com/ec/auction/oilAuctionList.jsp?_DARGS=/ec/auction/oilAuctionList.jsp"] url = 'https://www.e-shenhua.com/ec/auction/oilAuctionList.jsp' def parse(self, response): items = [] selector = Selector(response) contents = selector.xpath('//table[@class="table expandable table-striped"]/tbody/tr') urldomain = 'https://www.e-shenhua.com' for content in contents: item = CyfirstItem() productId = content.xpath('td/a/text()').extract()[0].strip() productUrl = content.xpath('td/a/@href').extract()[0] totalUrl = urldomain + productUrl productName = content.xpath('td/a/text()').extract()[1].strip() deliveryArea = content.xpath('td/text()').extract()[-5].strip() saleUnit = content.xpath('td/text()').extract()[-4] item['productId'] = productId item['totalUrl'] = totalUrl item['productName'] = productName item['deliveryArea'] = deliveryArea item['saleUnit'] = saleUnit items.append(item) print(len(items)) # **************进入每个产品的子网页 for item in items: yield Request(item['totalUrl'],meta={'item':item},callback=self.parse_item) # print(item['productId']) # 下一页的跳转 nowpage = selector.xpath('//div[@class="pagination pagination-small"]/ul/li[@class="active"]/a/text()').extract()[0] nextpage = int(nowpage) + 1 str_nextpage = str(nextpage) nextLink = selector.xpath('//div[@class="pagination pagination-small"]/ul/li[last()]/a/@onclick').extract() if (len(nextLink)): yield scrapy.FormRequest.from_response(response, formdata={ *************** }, callback = self.parse ) # 产品子网页内容的抓取 def parse_item(self,response): sel = Selector(response) item = response.meta['item'] # print(item['productId']) productInfo = sel.xpath('//div[@id="content-products-info"]/table/tbody/tr') titalBidQty = ''.join(productInfo.xpath('td[3]/text()').extract()).strip() titalBidUnit = ''.join(productInfo.xpath('td[3]/span/text()').extract()) titalBid = titalBidQty + " " +titalBidUnit minBuyQty = ''.join(productInfo.xpath('td[4]/text()').extract()).strip() minBuyUnit = ''.join(productInfo.xpath('td[4]/span/text()').extract()) minBuy = minBuyQty + " " + minBuyUnit isminVarUnit = ''.join(sel.xpath('//div[@id="content-products-info"]/table/thead/tr/th[5]/text()').extract()) if(isminVarUnit == '最小变量单位'): minVarUnitsl = ''.join(productInfo.xpath('td[5]/text()').extract()).strip() minVarUnitdw = ''.join(productInfo.xpath('td[5]/span/text()').extract()) minVarUnit = minVarUnitsl + " " + minVarUnitdw startPrice = ''.join(productInfo.xpath('td[6]/text()').extract()).strip().rstrip('/') minAddUnit = ''.join(productInfo.xpath('td[7]/text()').extract()).strip() else: minVarUnit = '' startPrice = ''.join(productInfo.xpath('td[5]/text()').extract()).strip().rstrip('/') minAddUnit = ''.join(productInfo.xpath('td[6]/text()').extract()).strip() item['titalBid'] = titalBid item['minBuyQty'] = minBuy item['minVarUnit'] = minVarUnit item['startPrice'] = startPrice item['minAddUnit'] = minAddUnit # print(item) return item ```
EXT与后台交互的问题!我从Action得到值就是打印不到页面
我从Action得到值就是打印不到页面,而且我已经转换成了jsonArray!!! 前台就是获取不到!! 请各位看看我的代码哪里有出入! 前台页面的ext代码: Ext.onReady(function() { var Tree = Ext.tree; //定义根节点的Loader var treeloader=new Tree.TreeLoader({ dataUrl:'<%=request.getContextPath()%>/IT_USERAction.do?cmd=getTree' //指定的URL }); //异步加载根节点 var rootnode=new Tree.AsyncTreeNode({ id:'1', text:'目录树根节点' }); var treepanel = new Tree.TreePanel({ //renderTo:"tree_div", //如果使用renderTo,则不能使用setRootNode()方法,需要在TreePanel中设置root属性。 el:'tree', //填充区域 rootVisible:true, //隐藏根节点 border:true, //边框 animate:true, //动画效果 autoScroll:true, //自动滚动 enableDD:false, //节点是否可以拖拽 containerScroll:true, //root:rootnode, //两种设置root节点的方法, //一种配置root,另一种就是setRootNode loader:treeloader }); //设置根节点 treepanel.setRootNode(rootnode); //响应事件,传递node参数 treepanel.render(); rootnode.expand(false,false); }); 后台action代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { System.out.println("构建一棵树"); Map map = new HashMap(); map.put("id", "1"); Object value = new Object(); value = Boolean.TRUE; map.put("cls", "file"); //是否是叶子节点,我这里只有一层所以直接写的TRUE map.put("leaf", value); List list = new ArrayList(); list.add(map); JSONArray jsonArray = JSONArray.fromObject(list); response.getWriter().print(jsonArray); return null; } 前台永远只有一个根节点,而且已经进入到了Action里面!! 我还想问问怎么在父节点和子节点前面增加chackbox框!! [b]问题补充:[/b] yourgame 说的我不是很明白! 因为我刚刚开始看ext方面的东西,我现在需要的是我从后台去拿出数据 所以才调用到action 我看到有些实例是可以从后台直接拿出数据然后转换成jsonArray之后直接可以在页面上面显示出来!!
properties文件内容的unicode转换(提问)
[size=medium]在开发过程中,为了使开发出来的代码更健壮、更灵活,我们常常把一些常变的变量写 <br />入到配置文件中。而在这些配置文件中,properties文件是使用的比较多的,它不仅配置起 <br />来简单(一个key=value形式即可),而且在对文件的操作中也比较方便。 <br />&nbsp; <br />&nbsp;&nbsp;&nbsp; 由于字符的编码问题以及properties文件在国际化的使用过程中,我们常常需要将文件 <br />内容转换为unicode码。以免从文件里取出的内容为乱码。 <br /> <br />&nbsp;&nbsp;&nbsp; 解决上面问题,我们一般采用一些如 properties editor 形式的插件。现在我写了一段 <br />类似properties editor的转码程序(转换为unicode码)。大致功能是:从一个properties文件里逐行读出一字符串(有可能是注释,也有可能是 'key=value' 形式的属性配置)。然后将属性配置行的value转换为unicode码,转换完后写入到另一个文件里。 <br /><span style="color: blue"> <br />&nbsp;&nbsp;&nbsp; 现在的问题是,上面功能能完成,即可以把properties文件转换成一个内容为unicode的 <br />properties文件(后面称unicode文件)。但是,在从unicode文件读文件配置内容时候,就会报错,或根本就不能通过Properties.load(in)的形式加载文件。希望您能花点时间,帮我解决这个问题。</span> <br /> <br />&nbsp;&nbsp;&nbsp; 也许我描述的不太清楚,现在我贴出部分代码,您先看看,知道我的大概意思,然后把整 <br />个工程下载到你本地,你帮我调试一下。先说明一下,对这个问题,我研究了好几天,实在找 <br />不到解决问题的方法,才贴出的。请大家别责怪我不思考就贴出问题来。 <br /> <br /><pre name="code" class="java">package com.tja.code; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.util.LinkedList; import java.util.Properties; import java.util.Queue; import com.tja.util.StringUtil; import com.tja.util.file.CREATE_METHOD; import com.tja.util.file.FileUtil; /** * 将properties文件内容换成Unicode码形式的properties文件 * * */ public class UnicodeUtil { /** * unicode码前缀 */ private static final String UNICODE_PREFIX = "\\u"; /** * 文件内容注释标志 */ private static final String COMMENTS_PREFIX = "#"; /** * 属性(properties)文件中的等于 '=' 符号 */ private static final String EQUAL_SIGNAL = "="; public static void propFile2Unicode(String fileName) throws FileNotFoundException, IOException { //Assert.notNull(fileName); propFile2Unicode(new File(fileName),null); } /** * 将属性文件里内容转换为unicode码(只将文件里的value转换为unicode,而key值不变)。 * 实现逻辑: 逐行读取文件内容,对每行内容进行转码(转成unicode形式),对转码的内容 * 又存入一队列中。最后使用队列先进先出的特点将所有内容写入一新的文件里, * 即fileName. * @param file * 属性文件(properties文件) * @param fileName * 记录转码后内容的文件名 * @throws FileNotFoundException * @throws IOException */ public static void propFile2Unicode(File file,String fileName) throws FileNotFoundException, IOException { BufferedReader br = new BufferedReader(new FileReader(file)); String line; String unicodeValue; Queue&lt;String&gt; queue = new LinkedList&lt;String&gt;(); while((line = br.readLine())!=null) { unicodeValue = value2unicode(line); //对读出的一行内容进行转码 queue.add(unicodeValue); } br.close(); //如果没指定文件名,则将内容写入原文件里 String filePath = StringUtil.hasLength(fileName)?fileName:file.getAbsolutePath(); write2file(filePath,queue); } /** * 将一行字符串转换成unicode形式。注意,分了注释和非注释的处理,注释 * 的内容也要转换成unicode形式 * * @param str * 字符串 * @return */ public static String value2unicode(String str) { return str.startsWith(COMMENTS_PREFIX)?dealWithComments(str):dealWithNonComments(str); } /** * 对注释内容进行转换成unicode,注释符号'#'不作处理 * * @param comments * 注释字符串,形式为 '#abccom好' * @return */ public static String dealWithComments(String comments) { //Assert.notNull(comments); if(!comments.startsWith(COMMENTS_PREFIX)) { throw new IllegalArgumentException("the parameter["+comments+"] is not comments!"); } String comment = comments.substring(1); return COMMENTS_PREFIX+GBK2Unicode(comment); } /** * 对非注释的一行字符串进行unicode转码,该字符串格式要求为key=value形式 * 即如:userName=xiaoxin。否则会抛出异常 * * @param non_comments * 非注释字符串 * @return */ public static String dealWithNonComments(String non_comments) { if(null == non_comments || 0 == non_comments.trim().length()) { return ""; } if(non_comments.startsWith(COMMENTS_PREFIX)) { throw new IllegalArgumentException("the parameter["+non_comments+"] is comments!"); } int index = non_comments.indexOf(EQUAL_SIGNAL); if(index == -1) { throw new IllegalArgumentException("the parameter["+non_comments+"] has no '=' !"); } String key = non_comments.substring(0,index+1); String value = non_comments.substring(index+1); return key+GBK2Unicode(value); } /** * 将队列内容写入指定文件里 * * @param filePath * @param queue * @throws IOException */ private static void write2file(String filePath,Queue&lt;String&gt; queue) throws IOException { //Assert.hasText(filePath); FileUtil.createFullPathFile(filePath, CREATE_METHOD.OVERWRITE); while(!queue.isEmpty()) { String content = queue.poll(); FileUtil.write2File(filePath, true,null, content+"\n"); } } /** * 字符串类型转换为Unicode * @param str * @return */ public static String GBK2Unicode(String str) { if(null == str) { return ""; } StringBuffer buf = new StringBuffer(UNICODE_PREFIX); for(int i = 0;i&lt;str.length();i++) { buf.append(char2Unicode(str.charAt(i))); if(i != str.length()-1) { buf.append(UNICODE_PREFIX); } } return buf.toString(); } /** * char类型转换为Unicode * @param ch * @return */ public static String char2Unicode(char ch) { return Integer.toString(ch, 16); } public static void main(String[] args) throws FileNotFoundException, IOException { String str = "D:/bb.properties"; String str1 = "D:/cc.properties"; String ss = "项目额度"; UnicodeUtil.propFile2Unicode(new File(str),str1); String g = UnicodeUtil.GBK2Unicode(ss); System.out.println(g); InputStream in = new FileInputStream(new File(str1)); Properties p = new Properties(); p.load(in); System.out.println(p.getProperty("FMS.loader.project")); System.out.println(p.getProperty("FMS.chinese")); } } </pre> <br /> <br />&nbsp; 请大家有时间帮忙看看。哦运行报的错误如下: <br /> <br /> <span style="color: red">&nbsp;&nbsp; Exception in thread "main" java.lang.IllegalArgumentException: Malformed \uxxxx encoding. <br /> at java.util.Properties.loadConvert(Unknown Source) <br /> at java.util.Properties.load(Unknown Source) <br /> at com.tja.code.UnicodeUtil.main(UnicodeUtil.java:175)</span>[/size]<br/><strong>问题补充</strong><br/><div class="quote_title">helin 写道</div><div class="quote_div">load的时候指定编码</div> <br /> <br /> <br />恕小弟愚笨,请问load的时候怎么指定编码呢?能给点例示代码吗?
XTemplate 事件问题
[b]我想要在XTtemplate中添加一个链接的单击事件,当点击链接在同一页面的另一个Panel中显示数据并重新加载,请问怎么做呀?[/b] [color=blue]XTtemplate中自带的事件不行,因为它在进入页面时就加载了,我要点击之后才加载。[/color] 下面的我的[b]ExtJS代码[/b]: createFlowConsole : function() { var data = ['actionId','name']; this.store = new Ext.data.JsonStore({ url: _ctx.base + '/osworkeflow/getAvailableActions.action', root:'action', fields: data }); var xtpl = new Ext.XTemplate( '<tpl for=".">', '<tpl if="xindex % 2 == 1">', '<div class="x-grid3-cell-inner" style="font-size:10px; background-color:#FFFFFF; border-bottom:1px solid #EDEDED"">', '<span class="" style=" padding-left:30px;"><a id="showMySteps" href="javaScript: onclick={[this.test()]}">{name}</a></span></div>', '</tpl>', '<tpl if="xindex % 2 == 0">', '<div class="x-grid3-cell-inner" style="font-size:10px; background-color:#FAFAFA; border-bottom:1px solid #EDEDED"">', '<span class="" style=" padding-left:30px;"><a href="#">{name}</a></span></div>', '</tpl>', '</tpl>',{ test : function(){ alert("ok"); } } ); this.availableActionsPanel = new Ext.Panel( { id : 'mySteps_panel', region : 'north', title : '我的步骤', margins : '0 0 5 0', height : 150, items: new Ext.DataView({ store: this.store, tpl: xtpl, autoHeight:true, multiSelect: true, overClass:'x-view-over', itemSelector:'div.thumb-wrap', emptyText: 'No data to display' }) }); this.steps = this.createSetpsGrid(); var flowConsole = new Ext.Panel( { region : 'center', layout : "border", border : false, items : [ this.availableActionsPanel, this.steps ], margins : '5 5 5 0' }); return flowConsole; } 详细如下附件图所示 :
vue-awesome-swiper 手势缩放无效
问题描述: 想在vue项目中使用vue-awesome-swiper实现相册查看功能,测试的时候发现使用写死的图片src 时手势缩放没有问题,但是图片src集合换到从后台获取到再赋值的,手势缩放就不起作用了,不知道是什么原因。 用的vue template, 后台获取到的数据已经渲染到dom中,手机上测试切换没有问题,双击放大也可以,就是手势缩放或者双击放大后图片不能拖拽移动查看(用写死的图片src是可以的)。 vue项目依赖或版本: ``` "devDependencies": { "axios": "^0.15.3", "babel-plugin-component": "^0.10.1", "babel-plugin-transform-object-rest-spread": "^6.26.0", "bootstrap-sass": "^3.3.7", "cross-env": "^3.2.3", "jquery": "^3.1.1", "laravel-mix": "^0.12.1", "less": "^2.7.3", "less-loader": "^4.0.5", "lodash": "^4.17.4", "postcss-px2rem": "^0.3.0", "vue-lazyload": "^1.2.6" }, "dependencies": { "fastclick": "^1.0.6", "leancloud-realtime": "^4.0.0-alpha.3", "leancloud-realtime-plugin-typed-messages": "^3.0.0", "leancloud-storage": "^3.4.2", "mint-ui": "^2.2.11", "moment": "^2.19.1", "vee-validate": "^2.0.0", "vue": "^2.5.13", "vue-awesome-swiper": "^2.6.7", "vue-resource": "^1.3.4", "vue-router": "^3.0.1", "vuex": "^3.0.1" } ``` 问题出现的环境背景及自己尝试过哪些方法: 试过使用另一个图片预览插件 [PhotoSwipe](http://photoswipe.com/ ""):PhotoSwipe,这个插件体验感比较好,但是插件需要预先知道图片的宽高,这个目前还没有时间研究。 相关代码: ``` <style> .viewImg .swiper-slide img { width: 100%; } </style> <template> <div class="viewImg" > <a class="btn-close f-r"><img src="/images/icon-close.png" @click="closeViewer" alt="关闭" title="关闭"></a> <swiper :options="swiperOption" ref="mySwiper"> <swiper-slide v-for="img in images" :key="img.id"> <div class="swiper-zoom-container"> <img :data-src="img.smallSizeUrl" class="swiper-lazy"> </div> </swiper-slide> <div class="swiper-button-prev" slot="button-prev"></div> <div class="swiper-button-next" slot="button-next"></div> </swiper> </div> </template> <script> import 'swiper/dist/css/swiper.css' ; import { swiper, swiperSlide } from 'vue-awesome-swiper' export default { components: { swiper, swiperSlide }, data() { return {swiperOption: { allowTouchMove: true, width: window.innerWidth, notNextTick: false, observer:true,//修改swiper自己或子元素时,自动初始化swiper observeParents:true,//修改swiper的父元素时,自动初始化swiper loadPrevNext: true, lazy: { loadPrevNext: true, }, lazyLoading : true, lazyLoadingInPrevNext: true, // 设置为true允许将延迟加载应用到最接近的slide的图片(前一个和后一个slide)。 zoom: true, grabCursor: true, // 设置为true时,鼠标覆盖Swiper时指针会变成手掌形状,拖动时指针会变成抓手形状。(根据浏览器形状有所不同) pagination: { el: '.swiper-pagination' }, navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' } } } }, //定义这个sweiper对象 computed: { swiper() { return this.$refs.mySwiper.swiper; } }, mounted () { //这边就可以使用swiper这个对象去使用swiper官网中的那些方法 // this.swiper.slideTo(0, 1, false); }, props: { images: { required: true } }, methods:{ closeViewer: function(){ this.viewImg = false; } } } </script> ``` 我期待的结果是什么?实际看到的错误信息又是什么: 需要实现流畅的相册查看功能,支持预加载、流畅切换以及手机中手势缩放查看。 [vue-awesome-swiper 的demo](https://surmon-china.github.io/vue-awesome-swiper/ "")里可以看到都可以满足目前的主要需求,但是我在项目中出现了以上问题,求助。
Jpa方式多对多关系中实体对象间如何通过一个实体获取另一实体的对象
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p>项目是ssh三大框架的,数据库是通过实体对象PO用注解的方式生成的。现在有两个PO实体,一个是角色,一个是菜单。他们之间是多对多关系,数据库会生成一张中间的关联表(仅包含ROEL_ID和TREE_ID),现在我想做权限分配,就是实现根据角色分配菜单的功能。在RoleAction这边想通过roleService.getRole(id).getTrees()的方式得到该角色下相应的菜单,但总是报如下错误:</p> <p><span style="color: #ff0000;">org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: wteam.pojo.RolePO.trees, no session or session was closed</span></p> <p><span style="color: #000000;">类RolePO和TreePO如下,Role是维护端,网上很多说多对多用懒加载的方式比较好,但是报错说session关闭了我又取不到结果。我如果换成急加载的方式,是能得到该RoleI下的Tree表了,但是查询Role表就出现问题了,记录会变成很多条,而且还是重复的。就是不知道哪里出了问题</span></p> <p> </p> <pre name="code" class="java">public class RolePO implements Serializable{ @Entity @Table(name="sys_role") public class RolePO implements Serializable{ //角色PO private static final long serialVersionUID = -6889909565150942238L; @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name = "ROLE_ID") private int roleId; //角色标识位 @Column(name = "NAME",unique = true,nullable = false) private String name; //角色名称 @Column(name = "DISCRIPTION") private String discription; //角色描述 @ManyToMany(targetEntity = TreePO.class, cascade = CascadeType.REFRESH) @JoinTable(name = "sys_role_tree_menu", joinColumns = { @JoinColumn(name = "ROLE_ID")}, inverseJoinColumns = { @JoinColumn(name = "TREE_ID") }) private List&lt;TreePO&gt; trees; //省略set、get方法 } </pre> <p> </p> <pre name="code" class="java">@Entity @Table(name="sys_tree_menu") public class TreePO implements Serializable{ private static final long serialVersionUID = -1549993655782216421L; //菜单PO @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name = "TREE_ID") private int treeId; //树形导航标识位 @Column(name = "NAME",unique = true,nullable = false) private String name; //名称 @ManyToMany(cascade = CascadeType.MERGE,mappedBy = "trees") private List&lt;RolePO&gt; roles; //省略其他属性、set()、get()... } </pre> <p> </p> <p> </p> </div>
js调用两个网站的api出现了一些
其中一部分的内容只用到一个api(fun(),标记1中的内容)可以单独运行,但是前面加了一些内容(嵌到另一个网站的api中,前一部分可以,到了标记2就不能再运行了) 一直不知为什么,求问(代码比较乱,见谅) ``` <html> <head> <meta charset="UTF-8"> <title>街景地图</title> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=UzRj5wun4UgkuoSdCimROD8k"> </script> <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=c0ee23ad2324c26661065de94f5b5676&plugin=AMap.Driving"> </script> </head> <body> <div id="container"></div> <div id="panel"></div> <script type="text/javascript"> //基本地图加载 var map = new AMap.Map("container", { resizeEnable: true, //地图中心点 zoom: 13 //地图显示的缩放级别 }); AMap.service(["AMap.RoadInfoSearch"], function() { //加载地理编码 var road=new AMap.RoadInfoSearch({ city:"福州", panel:"result" }); alert("2:"); road.roadInfoSearchByRoadName("金山大道",function (status,result){ if(status=="error ")alert("error"); else if (status=="no_data")alert("noting"); else { var a = result.info; var b = result.roadInfo; var e = b[0].path[0]; var llength = b[0].path.length; var f = b[0].path[llength - 1]; lng1=e[0].lng; lat1=e[0].lat; lng2=f[0].lng; lat2=f[0].lat; alert("3:") fun();** // 标记1** } }); }); function fun(){ alert(lng1); alert(lat1); alert(lng2); alert(lat2); var myGeo = new BMap.Geocoder(); //将地址解析结果显示在地图上,并调整地图视野 var map = new BMap.Map('container1'); var url=null; var driving = new BMap.DrivingRoute(map); //创建驾车实例 var lng11=lng1; //经度 var lat11=lat1; //纬度 var myP1 = new BMap.Point(lng11,lat11); //经纬度 var lng22=lng2; //经度 var lat22=lat2; //纬度 var myP2 = new BMap.Point(lng22,lat22); driving.search(myP1, myP2); //第一个驾车搜索 driving.setSearchCompleteCallback(function(){ var pts = driving.getResults().getPlan(0).getRoute(0).getPath(); //通过驾车实例,获得一系列点的数组 alert(pts.length); var i=0; for(i=0;i<pts.length;i++){ alert(pts[i].lng);alert(pts[i].lat); var panorama = new BMap.Panorama('panorama');**//标记2** alert("pano"); panorama.setPosition(new BMap.Point(pts[i].lng, pts[i].lat)); var panoramaService = new BMap.PanoramaService(); panoramaService.getPanoramaByLocation(new BMap.Point(pts[i].lng, pts[i].lat), function(data){ if(data.id) { url="http://api.map.baidu.com/panorama?width=400&height=200&location="+ pts[i].lng +","+ pts[i].lat +"&fov=90&poiid="+data.id+"&heading="+ azimuth +"&ak=UzRj5wun4UgkuoSdCimROD8k" ; request = new XMLHttpRequest(); // window.open(url); url="test.php?name="+url; // alert(url); url=url.replace(/&/g,'%'); // alert(url); url=url+"&i="+i; request.open("GET",url,"true"); request.send(); request.onreadystatechange=function() { alert(request.readyState); if(request.readyState==4) { alert(request.readyState); if(request.status==200) { alert(request.status); document.getElementById("content").innerHTML=request.responseText; alert("return"); } } } } else alert("no data"); }); } }) } </script> </body> </html> ```
fusionChart总是Invalid data问题
``` 我的服务器端的数据很简单就是 public void doPost(HttpServletRequest request ,HttpServletResponse response) throws ServletException,IOException{ //组装数据 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); StringBuffer xmlStr=new StringBuffer(); xmlStr.append("<chart caption='每月销售饼状图' xAxisName='月份’ showNames='1' formatNumberScale='0'>"); xmlStr.append("<set name='一月' value='100' color='AFD8F8'/>"); xmlStr.append("<set name='二月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='三月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='四月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='五月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='六月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='七月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='八月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='九月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='十月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='十一月' value='100' color='F6BD0F'/>"); xmlStr.append("<set name='十二月' value='100' color='F6BD0F'/>"); xmlStr.append("</chart>"); request.setAttribute("xmlStr", xmlStr); //直接转发到另一个servlet request.getRequestDispatcher("MyChart.jsp").forward(request,response); } 然后在另一个JSP文件中直接用SetDataXML <div id="charDiv"></div> <script type="text/javascript"> //创建FusionCharts对象 var chart1=new FusionCharts("<%=path%>/FusionChart_Evaluation/Doughnut3D.swf","fusionChartID","900","600"); //设置数据文件,直接加载动态的XML文件 chart1.setDataXML("${xmlStr}"); chart1.render("charDiv");//图片渲染的位置 </script> 网页跳转了之后就会出现Invalid data的问题,请问这到底哪里错了.... ```
scrapy运行爬虫时报错Missing scheme in request url
scrapy刚入门小白一枚。用网上的案例代码来玩一玩,案例是http://blog.csdn.net/czl389/article/details/77278166 中的爬取嘻哈歌词。这个案例下有三只爬虫,分别是songurls,lyrics和songinfo。我用songurls爬虫能从虾米音乐上爬取了url并保存在SongUrls.csv中,但是在用lyrics爬虫的时候会报错。信息如下 **D:\xiami2\xiami2>scrapy crawl lyrics -o Lyrics.csv 2017-10-21 21:13:29 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: xiami2) 2017-10-21 21:13:29 [scrapy.utils.log] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'xiami2.spiders', 'USER_AGENT': 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 4.0; Trident/3.0)', 'FEED_URI': 'Lyrics.csv', 'FEED_FORMAT': 'csv', 'DOWNLOAD_DELAY': 0.2, 'SPIDER_MODULES': ['xiami2.spiders'], 'BOT_NAME': 'xiami2'} 2017-10-21 21:13:29 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.feedexport.FeedExporter', 'scrapy.extensions.logstats.LogStats'] 2017-10-21 21:13:31 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2017-10-21 21:13:31 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2017-10-21 21:13:31 [scrapy.middleware] INFO: Enabled item pipelines: ['xiami2.pipelines.Xiami2Pipeline'] 2017-10-21 21:13:31 [scrapy.core.engine] INFO: Spider opened 2017-10-21 21:13:31 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2017-10-21 21:13:31 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023 2017-10-21 21:13:31 [scrapy.core.engine] ERROR: Error while obtaining start requests Traceback (most recent call last): File "d:\python3.5\lib\site-packages\scrapy\core\engine.py", line 127, in _next_request request = next(slot.start_requests) File "d:\python3.5\lib\site-packages\scrapy\spiders\__init__.py", line 83, in start_requests yield Request(url, dont_filter=True) File "d:\python3.5\lib\site-packages\scrapy\http\request\__init__.py", line 25, in __init__ self._set_url(url) File "d:\python3.5\lib\site-packages\scrapy\http\request\__init__.py", line 58, in _set_url raise ValueError('Missing scheme in request url: %s' % self._url) ValueError: Missing scheme in request url: 2017-10-21 21:13:31 [scrapy.core.engine] INFO: Closing spider (finished) 2017-10-21 21:13:31 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'finish_reason': 'finished', 'finish_time': datetime.datetime(2017, 10, 21, 13, 13, 31, 567323), 'log_count/DEBUG': 1, 'log_count/ERROR': 1, 'log_count/INFO': 7, 'start_time': datetime.datetime(2017, 10, 21, 13, 13, 31, 536236)} 2017-10-21 21:13:31 [scrapy.core.engine] INFO: Spider closed (finished) _------------------------------分割线--------------------------------------_ 我去查看了一下_init_.py,发现如下语句。 if ':' not in self._url: raise ValueError('Missing scheme in request url: %s' % self._url) 网上的解决方法看了一些,都没有能解决我的问题的,因此在此讨教,望大家指点一二(真没C币了)。提问次数不多,若有格式方面缺陷还请包含。 另附上代码。 #songurls.py import scrapy import re from scrapy.spiders import CrawlSpider, Rule from ..items import SongUrlItem class SongurlsSpider(scrapy.Spider): name = 'songurls' allowed_domains = ['xiami.com'] #将page/1到page/401,这些链接放进start_urls start_url_list=[] url_fixed='http://www.xiami.com/song/tag/Hip-Hop/page/' #将range范围扩大为1-401,获得所有页面 for i in range(1,402): start_url_list.extend([url_fixed+str(i)]) start_urls=start_url_list def parse(self,response): urls=response.xpath('//*[@id="wrapper"]/div[2]/div/div/div[2]/table/tbody/tr/td[2]/a[1]/@href').extract() for url in urls: song_url=response.urljoin(url) url_item=SongUrlItem() url_item['song_url']=song_url yield url_item ------------------------------分割线-------------------------------------- #lyrics.py import scrapy import re class LyricsSpider(scrapy.Spider): name = 'lyrics' allowed_domains = ['xiami.com'] song_url_file='SongUrls.csv' def __init__(self, *args, **kwargs): #从song_url.csv 文件中读取得到所有歌曲url f = open(self.song_url_file,"r") lines = f.readlines() #这里line[:-1]的含义是每行末尾都是一个换行符,要去掉 #这里in lines[1:]的含义是csv第一行是字段名称,要去掉 song_url_list=[line[:-1] for line in lines[1:]] f.close() while '\n' in song_url_list: song_url_list.remove('\n') self.start_urls = song_url_list#[:100]#删除[:100]之后爬取全部数据 def parse(self,response): lyric_lines=response.xpath('//*[@id="lrc"]/div[1]/text()').extract() lyric='' for lyric_line in lyric_lines: lyric+=lyric_line #print lyric lyricItem=LyricItem() lyricItem['lyric']=lyric lyricItem['song_url']=response.url yield lyricItem songinfo因为还没有用到所以不重要。 ------------------------------分割线-------------------------------------- #items.py import scrapy class SongUrlItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() song_url=scrapy.Field() #歌曲链接 class LyricItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() lyric=scrapy.Field() #歌词 song_url=scrapy.Field() #歌曲链接 class SongInfoItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() song_url=scrapy.Field() #歌曲链接 song_title=scrapy.Field() #歌名 album=scrapy.Field() #专辑 #singer=scrapy.Field() #歌手 language=scrapy.Field() #语种 ------------------------------分割线-------------------------------------- 在middleware下加了几行: sleep_seconds = 0.2 # 模拟点击后休眠3秒,给出浏览器取得响应内容的时间 default_sleep_seconds = 1 # 无动作请求休眠的时间 def process_request(self, request, spider): spider.logger.info('--------Spider request processed: %s' % spider.name) page = None driver = webdriver.PhantomJS() spider.logger.info('--------request.url: %s' % request.url) driver.get(request.url) driver.implicitly_wait(0.2) # 仅休眠数秒加载页面后返回内容 time.sleep(self.sleep_seconds) page = driver.page_source driver.close() return HtmlResponse(request.url, body=page, encoding='utf-8', request=request) ------------------------------分割线-------------------------------------- setting中加了几行也改了几行: from faker import Factory f = Factory.create() USER_AGENT = f.user_agent() DOWNLOAD_DELAY = 0.2 DEFAULT_REQUEST_HEADERS = { 'Host': 'www.xiami.com', 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Cache-Control': 'no-cache', 'Connection': 'Keep-Alive', } ITEM_PIPELINES = { 'xiami2.pipelines.Xiami2Pipeline': 300, }
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
前端 | 2. 正则
转载请注明以下: 本文转自清自以敬的博客:https://blog.csdn.net/qq_45791147 文章目录1.转义2.正则表达式初步2.1.匹配字符2.1.1.组成元素2.1.2.基础正则的设计 1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转义...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
Docker 从入门到掉坑
Docker 介绍 简单的对docker进行介绍,可以把它理解为一个应用程序执行的容器。但是docker本身和虚拟机还是有较为明显的出入的。我大致归纳了一下,可以总结为以下几点: docker自身也有着很多的优点,关于它的优点,可以总结为以下几项: 安装docker 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Doc...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
相关热词 基于c#波形控件 c# 十进制转十六进制 对文件aes加密vc# c#读取栈中所有的值 c# rsa256加密 好 学c# 还是c++ c# 和java的差距 c# curl网络框架 c# https证书请求 c# 中崎
立即提问