想写个程序读某个网站的某个网页里的某一部分的内容。
比如读新浪网站里的某个网页。
大概的思路是,网页到本地浏览器之后,已经是静态的html代码了。
这时候只要分析静态html代码,找到我需要的那一部分就可以了。
关键是先要能够在本地程序里得到这个网站的html代码。
不知道用servlet的filter功能是否可以实现这样的功能。
或者还有没有别的办法?望赐教。
比如读新浪网站里的某个网页。
大概的思路是,网页到本地浏览器之后,已经是静态的html代码了。
这时候只要分析静态html代码,找到我需要的那一部分就可以了。
关键是先要能够在本地程序里得到这个网站的html代码。
不知道用servlet的filter功能是否可以实现这样的功能。
或者还有没有别的办法?望赐教。
我看了一下,这个网页不支持rss订阅功能。http://finance.sina.com.cn/realstock/company/sh600756/nc.shtml网页是上面这个。我想从这个网页中把股票的价格读出来。
还有别的什么方法吗?望赐教。
import java.net.HttpURLConnection;
import java.net.URL;HttpURLConnection con = null;
StringBuffer sb = new StringBuffer();URL url = new URL("http://finance.sina.com.cn/realstock/company/sh600756/nc.shtml");
con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
con.setInstanceFollowRedirects(false);
con.setUseCaches(false);
con.setAllowUserInteraction(false);
con.connect();
//返回流对象,并转换成字符串
String line = "";
java.io.BufferedReader URLinput = new java.io.BufferedReader(new java.io.InputStreamReader(con.getInputStream(),"gb2312"));
while ((line = URLinput.readLine()) != null) {
sb.append(line);
}
con.disconnect();
byte[] responseBody = null;
//构造HttpClient的实例
HttpClient httpClient = new HttpClient();
GetMethod getMethod = new GetMethod(url);
try {
httpClient.executeMethod(getMethod);
responseBody = getMethod.getResponseBody(); } catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
getMethod.releaseConnection();
}
if(responseBody==null){
return null;
}else{
return new String(responseBody);
}
}
public List getMatcherGroup(String urlString,String regPattern){
List retList = new ArrayList();
String inputString = getInputString(urlString);
if(inputString==null){
return null;
}
PatternMatcher matcher = new Perl5Matcher();
org.apache.oro.text.regex.Pattern pattern = null;
PatternMatcherInput input;
MatchResult result;
pattern = getPattern(regPattern);
input = new PatternMatcherInput(inputString);
while (matcher.contains(input, pattern)) {
result = matcher.getMatch();
retList.add(result.group(0));
}
return retList;
} public static org.apache.oro.text.regex.Pattern getPattern(String regExpression ) {
//Create Perl5Compiler instances.
PatternCompiler compiler = new Perl5Compiler();
org.apache.oro.text.regex.Pattern pattern = null;
try {
pattern = compiler.compile(regExpression);
} catch (Exception e) {
}
return pattern;
}要用的时候就用 getMatcherGroup("http://........","正则表达式");
用HttpURLConnection,输入一个正常的url,可以得到下面这样的html代码。 <tr class="Tb1Now">
<td class="Tb1Li">当前价(元)</td>
<td id="itemCurrent2" class="red">-</td>
<td> </td>
</tr>可是,我想知道itemCurrent2这个id的具体内容,请问该怎么办?
有办法吗?
恩 对的,用socket编程,然后使用dom解析。
不过像csdn对rss也支持,那就更好了
最终的结果还是用HTMLParser配合百度或者google就可以了。
以前小看百度了,其实百度的功能还是蛮强大的。
谢谢楼上各位的帮助,真的帮了大忙。