目前我得到了以下内容,它正在从网站上抓取数据。
try {
in = ServiceUtils.connect(url);
} catch (Exception e1) {
e1.printStackTrace();
}
这太棒了,然后我可以遍历每一行来找到我想要的内容。
while ((inputLine = in.readLine()) != null){
//Do a whole bunch of stuff
}
但是,while 循环意味着我将循环浏览页面的整个内容,因为我已经知道我只想在达到如下所示的唯一文本字符串后才查看内容:
<caption>Latest Entries</caption>
如何跳过解析每一行代码?是否可以在解析之前删除该字符串上方的所有内容?
最佳答案
除非您知道它在页面上的位置(它前面有多少个字符),否则没有真正的方法可以做到这一点。如果不知道要跳转到的位置,则无法跳转到某个位置,找到该位置的唯一方法是扫描文件以查找字符串。
您可以做的是确保一次扫描文件一行,只有在找到与搜索字符串匹配的行后才开始任何其他处理。
任何库方法(即indexOf、matches等)都只需在方法内部执行与在方法外部执行的扫描相同的循环。
我只需执行两个 while 循环,第一个循环消耗字符串直到找到匹配项,然后第二个循环进行处理。
while ((inputLine = in.readLine()) != null &&
inputLine.indexOf("<caption>Latest Entries</caption>")!=-1){
// Do nothing
}
while ((inputLine = in.readLine()) != null) {
// Now do stuff
}
关于 java 。如何从 BufferedReader 值中删除直到某个点的所有行以避免解析它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20745679/