问题描述
最近在遇到一个问题: 我通过java代码连接百度接口搜索内容代码如下: public static void main(String[] args) {// TODO Auto-generated method stubtry { String key = "java"; //查询关键字 key = URLEncoder.encode(key, "gb2312"); URL u = new URL("http://www.baidu.com.cn/s?wd=" + key); URLConnection conn = u.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader( conn.getInputStream(), "gb2312")); String str = reader.readLine(); while (str != null) { System.out.println(str); str = reader.readLine(); } reader.close(); } catch (Exception ex) { ex.printStackTrace(); }} 问题是:我搜到的内容我需要过滤,我只要在页面中的一条一条的内容,比如: 上面的代码搜索出来的内容: 1. java.com: Java 与您 立即下载适用于您的桌面计算机的 Java 软件! www.java.com/ 2011-4-21 - 百度快照 2.JAVA - 手机软件 适用机型:Java 赶集生活是由中国最大的本地生活信息门户赶集网(www.ganji.com)最新出品的一款永久免费的机 软件: 【主要功能】: 1、周边信息实时掌握:... soft.shouji.com.cn/sort/java.jsp 2011-8-25 - 百度快照 就这样,我只要这样的数据,并且还要再内容前面加上一个checkbox,方便我以后操作他们,我该怎么办?各位帮忙看看!小弟很急, 问题补充:Wind_ZhongGang 写道
解决方案
class="result 这个字符串是判断是否是结果的依据。
解决方案二:
package com.resource;import junit.framework.TestCase;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;/** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 9/6/11 * Time: 10:03 AM */public class FilterContentTest extends TestCase { public void testFilterContent() throws Exception { String key = "java"; key = URLEncoder.encode(key, "gb2312"); URL u = new URL("http://www.baidu.com.cn/s?wd=" + key); URLConnection conn = u.openConnection(); InputStream inputStream = conn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "gb2312"); BufferedReader reader = new BufferedReader(inputStreamReader); String str = reader.readLine(); List<String> results = new ArrayList<String>(); while (str != null) { if (str.contains("class="result")) { String nextStr = reader.readLine(); String result = str + nextStr; results.add(result); } str = reader.readLine(); } for (String result : results) { System.out.println(result); } reader.close(); }}