使用Http访问网络并且使用正则获取需要用到的图片链接

来源:互联网 发布:网络信息安全漫画 编辑:程序博客网 时间:2024/06/15 23:04
下面是我在Fragment中做的访问网络操作,大家不必理会,只要看getDatas();获取数据方法即可,而在getDataS方法的最后调用了ParseDatas()使用正则表达式
获取想要img路径。 
代码中的stringUri是百度图片中一个美女分类的路径,我们对该路径进行网络访问,并且进行我们的学习。在这里谢谢百度的学习资料(如果侵权,请立刻告知,我将删除)
(唠叨几句,各位可以跳过)
作为开发的学生,没有后台感觉好郁闷,找了很久的api没有找到,只好用正则表达式获取想要的图片了。
其实人类还是很聪明的。遇到困难,就迎难而上。
先上效果图:
没图说街霸
这就是正则表达式,获取到的Img路径,是不是有点激动呢?赶紧get起来吧
package com.ityingli.www.mynews.Pager;import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.ityingli.www.mynews.R;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.regex.Matcher;import java.util.regex.Pattern;public class VideoFragment extends Fragment {   String TAG = "VideoFragment";    StringBuffer stringbuffer = new StringBuffer();    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        view = inflater.inflate(R.layout.layout_video,container,false);        /*        *通过http连接网路获取网页源码        * */        getDatas();        /*        * 用正则表达式抓取源码中的图片        * */        //parseDatas();        return view;    }    /*    * 正则获取所需要的数据    * */    private void parseDatas() {        //正则
//(http:|https:){1}(//){1}.*?.jpg    正则表达式抓取图片网址////解释出数据之后,发现这个正则式是有漏网之鱼的//这里优化,一个网址中间是没有双引号的  (http:|https:){1}(//){1}((?!").)*?.jpg//注解:.*?   代表0个或者多个非\n的任意字符(并且是非贪婪模式)//对于正则表达式中?!的理解:我目前的理解是不想被捕获

        //String reg = "(http:|https:){1}(//){1}.*?.jpg";        String reg = "(http:|https:){1}(//){1}((?!\").)*?.jpg";        Pattern pattern = Pattern.compile(reg);        Matcher mat= pattern.matcher(stringbuffer);       while(mat.find()){           Log.e(TAG, "parseDatas: "+mat.group());       }    }    /*     * 获取数据     * */    private void getDatas() {        new Thread(){            public void run(){        String stringUrl  = "https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&hs=0&xthttps=111111&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E7%BE%8E%E5%A5%B3&oq=%E7%BE%8E%E5%A5%B3&rsp=-1";        //String stringUrl  = "http://open.lovebizhi.com/pengyou.php#";        try {            //url            URL url = new URL(stringUrl);            //打开连接            HttpURLConnection connect  = (HttpURLConnection)url.openConnection();            //设置请求方式            connect.setRequestMethod("GET");            //设置请求时长,超时            connect.setConnectTimeout(8000);            //设置读取的时长            connect.setReadTimeout(8000);            //获取连接的流            InputStream is = connect.getInputStream();            BufferedReader br = new BufferedReader(new InputStreamReader(is));            String line = null;            //获取内容            while((line  = br.readLine())!=null){                stringbuffer.append(line);            }            /*            * 获取到数据,然后就解释数据了            * */            parseDatas();        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        }       }.start();    }}
今天6.1祝各位大孩子。节日快乐
如果发现错误,欢迎告知.互相学习,共同进步
 
原创粉丝点击