首页 新闻 搜索 专区 学院

下载网页上的验证码图片

0
悬赏园豆:200 [已关闭问题] 关闭于 2016-06-15 00:05

某网页上的验证码图片的src="goform/vcode?t=1465547411559",每次点击更换验证码按钮,src中后面那串数字会变化,利用下面方法传入src下载得到的文件是空的,方法如图:

请教各位大神,如何才能下载验证码图片到本地,最好可以给个示例,谢谢!

linxiyun2008的主页 linxiyun2008 | 初学一级 | 园豆:4
提问于:2016-06-10 17:27
< >
分享
所有回答(4)
2

参考下这个

//new一个URL对象  
        URL url = new URL("http://img.hexun.com/2011-06-21/130726386.jpg");  
        //打开链接  
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
        //设置请求方式为"GET"  
        conn.setRequestMethod("GET");  
        //超时响应时间为5秒  
        conn.setConnectTimeout(5 * 1000);  
        //通过输入流获取图片数据  
        InputStream inStream = conn.getInputStream();  
        //得到图片的二进制数据,以二进制封装得到数据,具有通用性  
        byte[] data = readInputStream(inStream);  
        //new一个文件对象用来保存图片,默认保存当前工程根目录  
        File imageFile = new File("BeautyGirl.jpg");  
        //创建输出流  
        FileOutputStream outStream = new FileOutputStream(imageFile);  
        //写入数据  
        outStream.write(data);  
        //关闭输出流  
        outStream.close();

 

seayxu | 园豆:5468 (大侠五级) | 2016-06-10 17:40

我试了下,不行,好像跟src有关系,我的这个src好像不是图片地址,像是一个方法调用

支持(0) 反对(0) linxiyun2008 | 园豆:4 (初学一级) | 2016-06-10 19:57

@linxiyun2008: 验证码的地址跟你这个类似,你查看一下

支持(0) 反对(0) seayxu | 园豆:5468 (大侠五级) | 2016-06-10 20:41
0

你看下真实的场景下,那个验证码图片对应的请求明细。你模拟请求的时候,最好带上全部的信息。

幻天芒 | 园豆:36608 (高人七级) | 2016-06-11 08:39
0

你的writer即没有flush()也没有close(), 貌似东西没写进去啊...

额, 给你一个我写过的down验证码的方法, 拽的是我们学校的一个登录界面的验证码

在android上也能跑, 应该没问题的...

 1 public void getCaptcha(File file) throws IOException {
 2         URL url = new URL(HOST + CAPTCHA_SUFFIX);
 3         URLConnection urlConnection = url.openConnection();
 4         urlConnection.setRequestProperty("Cookie", "JSESSIONID="+JSESSIONID);
 5         urlConnection.connect();
 6         InputStream inputStream = urlConnection.getInputStream();
 7         byte[] bytes = new byte[1024];
 8         FileOutputStream fileOutputStream = new FileOutputStream(file);
 9         int LENGTH;
10         while ((LENGTH = inputStream.read(bytes)) != -1){
11             fileOutputStream.write(bytes, 0, LENGTH);
12         }
13         inputStream.close();
14         fileOutputStream.close();
15     }

多余的东西请无视...

来源: https://github.com/hwding/libXDUQuery/blob/master/src/FooPackage/ECard.java

GH05T | 园豆:224 (菜鸟二级) | 2016-06-12 21:41
0

 

  1. import urllib2
  2. r=urllib2.Request('http://tieba.baidu.com/cgi-bin/genimg?3135313630383433363838393935373935363335313537313334303030303030303030303030303031323138363130343636E4F886A9DAF430EE81C0895A1D28AB2A',headers={'referer':'http://tieba.baidu.com/f?kz=1234567890','user-agent':'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1'})
  3. fp=open('test.jpeg','wb')
  4. for  k in urllib2.urlopen(r):
  5.       fp.write(k)

 

_博客 | 园豆:264 (菜鸟二级) | 2016-06-13 09:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册