-
jquery解析图片地址字符串中文乱码的解决方法
2016-06-18 23:46:10-当我们需要解析图片地址字符串时,如果我们用jquery直接获取src中的地址时,输入以下代码: alert($('.img_class').attr('src')); -输出为: -解决方法:加上decodeURL(para)方法,如下所示 alert(decodeURL($('....-当我们需要解析图片地址字符串时,如果我们用jquery直接获取src中的地址时,输入以下代码:
alert($('.img_class').attr('src'));
-输出为:
-解决方法:加上decodeURL(para)方法,如下所示
alert(decodeURL($('.img_class').attr('src')));
此时再次渲染页面,输出为:
可以看到url中的中文正常显示~
-
用asp解析图片地址
2009-01-07 22:57:00但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。 以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器...现在基于WEB页的HTML的编辑器在新闻系统,文章系统中用得越来越广,一个网页一粘就可以保持原来的样式,同时图片也可以在这个页中保持。但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。 以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器并且替换页面上的链接?答案是肯定的。
要实现这个功能需要经过三个步骤:
一,取得原页中的图片的地址。方法很多,可以用分割字符串,也可以用正则匹配。实践证明用正则匹配最为简单。经过分析图片的地址都保存在<img>标签中。我们可以先取得所有这个标签。过程如下:
Set objRegExp = New Regexp'设置配置对象
objRegExp.IgnoreCase = True’忽略大小写
objRegExp.Global = True’设置为全文搜索
objRegExp.Pattern = "<img.+?>"'为了确保能准确地取出图片地址所以分为两层配置:首先找到里面的<img>标签,然后再取出里面的图片地址后面的getimgs函数就是实现后一个功能的。
strs=trim(str)
Set Matches =objRegExp.Execute(strs)’开始执行配置
For Each Match in Matches
RetStr = RetStr &getimgs( Match.Value )’执行第二轮的匹配
Next所有的图片在里面都是这样的src="http://图片的地址",所以可以这样来取得确切的图片地址:
function getimgs(str)
getimgs=""
Set objRegExp1 = New Regexp
objRegExp1.IgnoreCase = True
objRegExp1.Global = True
objRegExp1.Pattern = "http://.+?"""’取出里面的地址
set mm=objRegExp1.Execute(str)
For Each Match1 in mm
getimgs=getimgs&"||"&left(Match1.Value,len(Match1.Value)-1)’把里面的地址串起来备用
next
end function取得了所有的图片的地址,我们就可以进行第二步的操作了。
二,下载图片并保存在服务器上。这个又可以分为两个步骤:一个是取得图片的内容,另一个是保存在服务器上。取得图片的内容是通过下面的函数来实现的:
function getHTTPPage(url)
on error resume next
dim http
set http=server.createobject("MSXML2.XMLHTTP")‘使用xmlhttp的方法来获得图片的内容
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=Http.responseBody
set http=nothing
if err.number<>0 then err.Clear
end function
取得了图片的内容要保存,给人一种感觉是用FSO来作就可以了,但实际上不行,这样保存程序就会出错,因为FSO不支持流式的文件,所以我们要调用另一个对象:ADO.STREM。具体的过程如下:
function saveimage(from,tofile)
dim geturl,objStream,imgs
geturl=trim(from)
imgs=gethttppage(geturl)'取得图片的具休内容的过程
Set objStream = Server.CreateObject("ADODB.Stream")'建立ADODB.Stream对象,必须要ADO 2.5以上版本
objStream.Type =1'以二进制模式打开
objStream.Open
objstream.write imgs'将字符串内容写入缓冲
objstream.SaveToFile server.mappath(tofile),2'-将缓冲的内容写入文件
objstream.Close()'关闭对象
set objstream=nothing
end function
所以只要用一个循环来把刚才取得的地址中的图片全部保存下来,具体过程如下:
arrimg=split(retstr,"||")'分割字串,取得里面地址列表
allimg=""
newimg=""
for i=1 to ubound(arrimg)
if arrimg(i)<>"" and instr(allimg,arrimg(i))<1 then'看这个图片是否已经下载过
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
saveimage(arrimg(i),fname)‘保存地址的函数,过程见上面
allimg=allimg&"||"&arrimg(i)'把保存下来的图片的地址串回起来,以确定要替换的地址
newimg=newimg&"||"&fname'把本地的地址串回起来
end if
next
第三步就是替换原来的地址了。具体的过程就是下面了:
arrnew=split(newimg,"||")'取得原来的图片地址列表
arrall=split(allimg,"||")'取得已经保存下来的图片的地址列表
for i=1 to ubound(arrnew)'执行循环替换原来的地址
strs=replace(strs,arrall(i),arrnew(i))
next
cctv=strs
讲到这里,这个函数的基本过程就是这样了,当然可以对它进行改造就可以实现更多的功能,如:加上图片大小的限制,加上对本地机上的图片下载的限制,以免造成重复下载图片。同时也应该看到这个函数的不足之处是只能处理静态的图片文件,不能适用程序生成的图片。 -
用asp解析图片地址,并将其保存(转)
2019-05-14 17:57:08现在基于WEB页的HTML的编辑器在新闻系统,文章系统中用得越来越广,一个网页一粘就可以保持原来的样式,同时...但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观...现在基于WEB页的HTML的编辑器在新闻系统,文章系统中用得越来越广,一个网页一粘就可以保持原来的样式,同时图片也可以在这个页中保持。但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器并且替换页面上的链接?答案是肯定的。
要实现这个功能需要经过三个步骤:
一,取得原页中的图片的地址。方法很多,可以用分割字符串,也可以用正则匹配。实践证明用正则匹配最为简单。经过分析图片的地址都保存在标签中。我们可以先取得所有这个标签。过程如下:
Set objRegExp = New Regexp'设置配置对象
objRegExp.IgnoreCase = True’忽略大小写
objRegExp.Global = True’设置为全文搜索
objRegExp.Pattern = ""'为了确保能准确地取出图片地址所以分为两层配置:首先找到里面的标签,然后再取出里面的图片地址后面的getimgs函数就是实现后一个功能的。
strs=trim(str)
Set Matches =objRegExp.Execute(strs)’开始执行配置
For Each Match in Matches
RetStr = RetStr &getimgs( Match.Value )’执行第二轮的匹配
Next所有的图片在里面都是这样的src="http://图片的地址",所以可以这样来取得确切的图片地址:
function getimgs(str)
getimgs=""
Set objRegExp1 = New Regexp
objRegExp1.IgnoreCase = True
objRegExp1.Global = True
objRegExp1.Pattern = "http://.+?"""’取出里面的地址
set mm=objRegExp1.Execute(str)
For Each Match1 in mm
getimgs=getimgs&"||"&left(Match1.Value,len(Match1.Value)-1)’把里面的地址串起来备用
next
end function取得了所有的图片的地址,我们就可以进行第二步的操作了。
二,下载图片并保存在服务器上。这个又可以分为两个步骤:一个是取得图片的内容,另一个是保存在服务器上。取得图片的内容是通过下面的函数来实现的:
function getHTTPPage(url)
on error resume next
dim http
set http=server.createobject("MSXML2.XMLHTTP")‘使用xmlhttp的方法来获得图片的内容
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=Http.responseBody
set http=nothing
if err.number<>0 then err.Clear
end function
取得了图片的内容要保存,给人一种感觉是用FSO来作就可以了,但实际上不行,这样保存程序就会出错,因为FSO不支持流式的文件,所以我们要调用另一个对象:ADO.STREM。具体的过程如下:
function saveimage(from,tofile)
dim geturl,objStream,imgs
geturl=trim(from)
imgs=gethttppage(geturl)'取得图片的具休内容的过程
Set objStream = Server.CreateObject("ADODB.Stream")'建立ADODB.Stream对象,必须要ADO 2.5以上版本
objStream.Type =1'以二进制模式打开
objStream.Open
objstream.write imgs'将字符串内容写入缓冲
objstream.SaveToFile server.mappath(tofile),2'-将缓冲的内容写入文件
objstream.Close()'关闭对象
set objstream=nothing
end function
所以只要用一个循环来把刚才取得的地址中的图片全部保存下来,具体过程如下:
arrimg=split(retstr,"||")'分割字串,取得里面地址列表
allimg=""
newimg=""
for i=1 to ubound(arrimg)
if arrimg(i)<>"" and instr(allimg,arrimg(i))<1 then'看这个图片是否已经下载过
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
saveimage(arrimg(i),fname)‘保存地址的函数,过程见上面
allimg=allimg&"||"&arrimg(i)'把保存下来的图片的地址串回起来,以确定要替换的地址
newimg=newimg&"||"&fname'把本地的地址串回起来
end if
next
第三步就是替换原来的地址了。具体的过程就是下面了:
arrnew=split(newimg,"||")'取得原来的图片地址列表
arrall=split(allimg,"||")'取得已经保存下来的图片的地址列表
for i=1 to ubound(arrnew)'执行循环替换原来的地址
strs=replace(strs,arrall(i),arrnew(i))
next
cctv=strs
讲到这里,这个函数的基本过程就是这样了,当然可以对它进行改造就可以实现更多的功能,如:加上图片大小的限制,加上对本地机上的图片下载的限制,以免造成重复下载图片。同时也应该看到这个函数的不足之处是只能处理静态的图片文件,不能适用程序生成的图片。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-124594/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10294527/viewspace-124594/
-
Android:漫画APP开发笔记之从WAP网站解析图片地址并加载图片
2015-02-02 22:50:57使用Jsoup解析网页。在项目中,通过浏览器访问网址点击“下一页”能正常翻页,而Android客户端每次GET的“下一页”地址都是第一页。原来是因为android客户端向网站发送HTTP请求时,没有在请求头部设置JSESSIONID,而...一、使用Jsoup解析网页
<pre><code class="prettyprint"><span class="typ">Document</span><span class="pln"> doc </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Jsoup</span><span class="pun">.</span><span class="pln">connect</span><span class="pun">(</span><span class="str">url</span><span class="pun">).</span><span class="kwd">get</span><span class="pun">();</span><span class="pln"> </span></code>
二、Session保持
在项目中,通过浏览器访问网址点击“下一页”能正常翻页,而Android客户端每次GET的“下一页”地址都是第一页。原来是因为android客户端向网站发送HTTP请求时,没有在请求头部设置JSESSIONID,而使用浏览器访问服务器时,在客户端每次发起请求的时候,都会将JSESSIONID设置在Cookie头中携带过去。因此可以在第一次数据请求时就获取sessionid的值并保存在一个静态变量中,然后将其打包在后续HTTP请求的Cookie中发给服务器,服务器根据这个JSESSIONID获取对应的Session,而不是重新创建一个新Session。当然,也可以直接将第一次数据请求时获取的cookies整个打包回去:
Document doc= Jsoup.connect(url) .cookies(res.cookies()) .timeout(10000) .get();<span style="font-size:12px;"></span><pre name="code" class="java"><span style="font-size:12px;">Connection.Response res= Jsoup.connect(url) .method(Method.GET) .execute();</span>
三、标签解析
由于项目网站所需要解析的图片标签特有width=100%这种属性,因此可通过以下方式解析出图片地址并加载图片:
<span style="font-size:12px;"> Elements element = doc.select("img").select("[width=100%]"); // 具有 href 属性的链接 Log.d("element", element.toString()); for(Element links : element) { String link = links.attr("src"); try { myFileUrl = new URL(link); } catch (MalformedURLException e) { Log.i("msg", "没有数据"); } try { HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection(); conn.setConnectTimeout(0); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); bitmap = BitmapFactory.decodeStream(is); is.close(); } catch (IOException e) { Log.i("msg", "没有数据"); } PicListInfo pi = new PicListInfo(); pi.setPicUrl(bitmap); newpiclistinfo.add(0,pi); } </span>
四、listview+adapter显示图片
由于网站每页只显示4张图片,一共有8页,因此在加载完前四张后需要保持session并模拟浏览器的“翻页”:<span style="font-size:12px;">if(newpiclistinfo.size() > 0){ Collections.reverse(newpiclistinfo); piclistinfo.addAll(newpiclistinfo); sla.notifyDataSetChanged(); piclist.setDividerHeight(0); if(dlg_loading.isShowing()){ dlg_loading.cancel(); } }else { Log.i("msg", "没有数据"); } </span>
附图片加载的完整线程:<span style="font-size:12px;">if(count<8){ Element next=doc.getElementById("toNext"); String next_url=next.attr("href");//“下一页”的url getpic(next_url);//调用图片加载的异步线程 } else{ Log.i("msg", "加载完毕"); Toast.makeText(getApplicationContext(), "已全部加载", Toast.LENGTH_SHORT).show(); }</span>
<span style="font-size:12px;"> public void getpic(String url){ new HTMLAsyncTask().execute(url); } private class HTMLAsyncTask extends AsyncTask<String, Integer, ArrayList<PicListInfo>> { Document doc = null; protected ArrayList<PicListInfo> doInBackground(String... Urls) { URL myFileUrl = null; Bitmap bitmap = null; ArrayList<PicListInfo> newpiclistinfo = new ArrayList<PicListInfo>(); try { String test=res.cookies().toString(); doc= Jsoup.connect(Urls[0]) .cookies(res.cookies()) .timeout(10000) .get(); Elements element = doc.select("img").select("[width=100%]"); // 具有 href 属性的链接 Log.d("element", element.toString()); for(Element links : element) { String link = links.attr("src"); try { myFileUrl = new URL(link); } catch (MalformedURLException e) { Log.i("msg", "没有数据"); } try { HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection(); conn.setConnectTimeout(0); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); bitmap = BitmapFactory.decodeStream(is); is.close(); } catch (IOException e) { Log.i("msg", "没有数据"); } PicListInfo pi = new PicListInfo(); pi.setPicUrl(bitmap); newpiclistinfo.add(0,pi); } }catch (IOException e) { // TODO Auto-generated catch block Log.i("msg", "没有数据"); } return newpiclistinfo; } // 异步方法调用对返回的字符串进行处理 protected void onPostExecute(ArrayList<PicListInfo> newpiclistinfo) { try { count++; if(newpiclistinfo.size() > 0){ Collections.reverse(newpiclistinfo); piclistinfo.addAll(newpiclistinfo); sla.notifyDataSetChanged(); piclist.setDividerHeight(0); if(dlg_loading.isShowing()){ dlg_loading.cancel(); } }else { Log.i("msg", "没有数据"); } if(count<8){ Element next=doc.getElementById("toNext"); String next_url=next.attr("href"); getpic(next_url); } else{ Log.i("msg", "加载完毕"); Toast.makeText(getApplicationContext(), "已全部加载", Toast.LENGTH_SHORT).show(); } } catch (Exception e) { Toast.makeText(getApplicationContext(), "网络连接出错啦", Toast.LENGTH_SHORT).show(); } } } </span>
-
用正则解析图片地址,并利用XMLHTTP组件将其保存[整理]
2019-10-04 04:07:33但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器... -
用XMLHTTP组件解析图片地址并保存
2006-06-05 10:42:00但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器... -
用正则解析图片地址,并利用XMLHTTP组件将其保存
2011-11-01 22:44:55但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器... -
用asp解析图片地址,并将其保存
2008-03-06 15:44:00但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器... -
用XMLHTTP组件正确解析图片地址并将其保存
2004-06-27 23:58:00但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器... -
用正则解析图片地址,并利用XMLHTTP组件将其保存(收集)
2005-06-08 16:30:00但是在使用过程中,如果所粘贴页中的图片被删除,就会在自己的页面上留下一个大大的“X”,影响美观。以前只好把这个图片保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在服务器... -
Android开发 json解析包含图片地址无法显示图片的问题
2016-09-14 11:17:23最近闲来无事用了聚合的api写着玩玩,然而死活加载不出来图片,把地址直接放在浏览器中打开是可以显示图片的,写死地址也是可以显示图片的,然而在代码中就是不显示,就是不显示,就是不显示…..为此我还请公司的... -
php原生实现解析二维码图片为地址
2020-02-04 15:46:23是因为一直依赖于第三方api的话 如果api挂掉 那么业务就出于瘫痪的状态 ...为了验证是否正确 我将一个图片地址放到草料解析的网站出来的结果 进行对比 发现是一模一样的结果! 类库自取地址:https://downloa... -
关于Jquery解析富文本图片地址
2016-08-19 18:01:08今天项目中用到了富文本编辑器,而且要求把富文本中的图片获取存到数据库中。查阅资料后总结一下解决方案 1.用jsoup工具获取整个页面的html,然后根据标签的类取html中的img标签,然后获取img标签的src属性。 2.前台... -
asp:image图片地址解析错误
2012-03-31 19:52:00在用户控件中直接使用html的标签将导致找不到图片, 一般的解决办法是使用服务器端控件,在ImageUrl 设置"~/images/red.png",这样就可以...分析发现,无论调用都在哪个层次,地址始终被解析成了 src="../images/red -
Android webview解析 ,webview点击获取图片地址
2015-05-29 18:15:57webview 解析 ...解析webview内的商品图片地址,店铺头像 定义内部类 Hand class Hand { @JavascriptInterface public void getImageurl(String data){ // Log.e("网页内容", data); Document document= -
内容编辑器的单图上传BUG 上传之后前台不解析正确图片URL地址
2021-01-06 15:49:40<div><p>内容编辑器的单图(...前台解析图片的URL错误地址演示: <img src="/images/2017/7/523201315.jpg" title="1.jpg" alt="1.jpg" /></p>该提问来源于开源项目:siteserver/cms</p></div> -
牛B的Glide图片加载解析地址
2017-07-14 18:33:08http://blog.csdn.net/guolin_blog/article/details/53759439 源码分析、用法 https://github.com/ls20lzy/glide-transformations 加载出不同样式的图片 -
代码里无图片地址_PHP快速实现解析无水印播放地址URL—快手篇
2020-11-25 09:34:19原理分析从快手App拿到视频分享链接在浏览器中访问,比如地址 https://f.kuaishou.com/1mqmxe 然后会重定向,打开浏览器控制台点击左上角的手机图片,刷新模拟手机请求,观察控制台源码可以看到下面的一段代码里包含... -
使用zxing解析二维码图片
2016-12-19 17:08:02使用zxing技术,通过图片地址和传图片BufferedImage的方式解析二维码图片,并把解析结果返回。
-
数据分析师八大能力培养 Part2.沟通需求能力.pdf
-
汇编程序调试工具debug32
-
Servlet中response向浏览器输出数据
-
2021-02-28
-
vue3从0到1-超详细
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
LVS + Keepalived 实现 MySQL 负载均衡与高可用
-
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
-
HTML表格
-
ZYtrans6.6.2.3.zip
-
Androidesk-release-androidesk.zip
-
零基础极简以太坊智能合约开发环境搭建并开发部署
-
AR9285 bt3无线网卡驱动
-
Python Tkinter 窗口的管理与设置(二):窗口的基本设置
-
HC32L130J8TA开发寄存器版视频连载1
-
JMETER 性能测试基础课程
-
MySQL 多实例安装 及配置主从复制实验环境
-
基于SSM实现的房屋租赁系统【附源码】(毕设)
-
SAPCAR.zip
-
DES的ECB加密解密汇总.zip