2010-11-20 41 views
0

我需要从特定行读取URL html页面中的行。阅读url数据特定行java

现在,我有以下代码:

u = new URL("http://s.ll/message/" + counter); 

is = u.openStream(); // throws an IOException 

dis = new DataInputStream(new BufferedInputStream(is)); 

while ((s = dis.readLine()) != null) { 
    if (s.contains('%') 
     ... 
} 

我知道这个内容会不会是50前行。

我该如何阅读这一行?

这是读取网址最快的方法吗?

回答

0

你在正确的轨道上。要从URL中读取数据,最简单的方法就是使用URL对象。对于更复杂的HTTP通信任务,您可能会考虑HTTPClient

您正在使用的方法 DataInputStream.readLine()已弃用,因为您无法提供从字节转换为字符串时使用的字符集。

我会做这样的:

u = new URL("http://s.ll/message/" + counter); 

is = u.openStream(); // throws an IOException 

// XXX notice the charset set to utf-8 here. 
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); 

while ((s = reader.readLine()) != null) { 
    if (s.contains('%') 
     ... 
} 

查找第50行要求你跳到它。由于您无法知道流的哪一个字节偏移,第50个'\ n'(或'\ r'或'\ r \ n'取决于Unix,Mac或Windows换行符) - 您只需从开始。

3

我怎样才能从这一行读取?

当计数低于50时,计数直线并忽略直线。除了读取直线和计算直线外,没有什么神奇的方法直接前进到第50行。无论如何,流必须被读取。

这是读取网址最快的方法吗?

取决于。然而,更常见的方法是BufferedReader + InputStreamReader其中您指定网页编码的字符集以避免mojibake

+0

+1 for mojibake! – systempuntoout 2010-11-20 22:51:01