17 html java screen-scraping text-extraction html-content-extraction
我正在开发一个下载HTML页面的程序,然后选择一些信息并将其写入另一个文件.
我想提取段落标记之间的信息,但我只能获得段落的一行.我的代码如下;
FileReader fileReader = new FileReader(file);
BufferedReader buffRd = new BufferedReader(fileReader);
BufferedWriter out = new BufferedWriter(new FileWriter(newFile.txt));
String s;
while ((s = br.readLine()) !=null) {
if(s.contains("<p>")) {
try {
out.write(s);
} catch (IOException e) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图添加另一个while循环,这将告诉程序继续写入文件,直到该行包含</p>标记,通过说;
while ((s = br.readLine()) !=null) {
if(s.contains("<p>")) {
while(!s.contains("</p>") {
try {
out.write(s);
} catch (IOException e) {
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.请有人帮忙.
Dan*_*nny 25
我真正喜欢使用的另一个html解析器是jsoup.您可以通过<p>2行代码获取所有元素.
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements ps = doc.select("p");
Run Code Online (Sandbox Code Playgroud)
然后将其写入另一行中的文件
out.write(ps.text()); //it will append all of the p elements together in one long string
Run Code Online (Sandbox Code Playgroud)
或者如果你想要它们在不同的行上,你可以迭代元素并分别写出来.
尝试(如果您不想使用 HTML 解析器库):
FileReader fileReader = new FileReader(file);
BufferedReader buffRd = new BufferedReader(fileReader);
BufferedWriter out = new BufferedWriter(new FileWriter(newFile.txt));
String s;
int writeTo = 0;
while ((s = br.readLine()) !=null)
{
if(s.contains("<p>"))
{
writeTo = 1;
try
{
out.write(s);
}
catch (IOException e)
{
}
}
if(s.contains("</p>"))
{
writeTo = 0;
try
{
out.write(s);
}
catch (IOException e)
{
}
}
else if(writeTo==1)
{
try
{
out.write(s);
}
catch (IOException e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41443 次 |
| 最近记录: |