dr-solomons
شنبه 12 بهمن 1387, 10:01 صبح
با سلام
اين سورس برنامه اي است كه چند ماه پيش با كمك همين انجمن اون رو نوشتم و تحويل دادم.
قابل توجه دانشجويان كارشناسي ناپيوسته جهاد دانشگاهي (واحد برنامه نويسي شي گرا).
document:
اين پروژه پس از اجرا يك آدرس url را به عنوان ورودي از كاربر مي خواهد ، كاربر مي تواند با وارد كردن "d" از آدرس url پيش فرض استفاده كند.
طريقه وارد كردن يك آدرس به همراه پورت و صفحه داخلي يك سايت به صورت زير است:
http://khabarchin.com:80/java/test2.php
پس از آن، كاربر بايد يك نام را پس از نمايش پيغام مناسب وارد كند .
در نهايت فايلي با اين نام ساخته شده و موارد يافت شده درون آن قرار مي گيرد.
كاربر مي تواند با وارد كردن "d" از نام فايل پيش فرض استفاده كند (output.htm)
در صورتي كه url وارد شده درست باشد برنامه صفحه مورد نظر را پيمايش كرده و تگهاي bold,h1,h2 را پيدا كرده و در يك متغير از نوع رشته (write_out) ذخيره مي كند.
در صورت پيدا شدن موردي آن را براي اطلاع كاربر روي صفحه نمايش نشان مي دهد. به طور مثال در صورت پيدا كردن يك تگ bold خط زير نمايش داده مي شود.
BOLD> bolditem…………end bolditem
در نهايت فايل مورد نظر با استفاده از كلاس write ساخته شده و متغير write_out براي درج در فايل به متد writetofile از اين كلاس ارسال مي شود.
لازم به توضيح است اين برنامه مي تواند تگهاي زير را از هم تشخيص داده و از نقطه مورد نظر اقدام به چيدن item كند.
<h1>item</h1>
<h1 class=xxx>item</h1>
همچنين اين برنامه قادر به يافتن تعداد بينهايت تگهاي مهم پشت سر هم در يك خط از html سايت است.
با وارد كردن آدرس msn.com هم خوب كار مي كنه
اشكال برنامه اين است كه محتواي سايت رو خط به خط مي خونه و تگهاي چند خطي رو تشخيص نمي ده
/**
*
* @author M.Abdolhoseini
*/
import java.net.*;
import java.io.*;
import java.util.Scanner;
//------------------ creat & write to file class ---------------
class write {
void writetofile(String strw , String fname) {
try {
String fileName = fname;
BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
out.write("\n");
out.write(strw);
System.out.println("<<::<<'"+fname+"' created in default folder>>::>>");
out.close();
} catch (IOException e) {
System.out.println("IOException:");
e.printStackTrace();
}
}
}
//*************************************MAIN********* ******************************
public class Main {
public static void main(String[] args) {
write writer=new write();
int st=0, end=0;
String write_out=new String();
Scanner scanner=new Scanner(System.in);
System.out.println("Example http://khabarchin.com:80/java/test2.php");
System.out.print("Enter URL with 'http://' & port 80(Enter 'd'> for default):");
String urlstr=scanner.next();
System.out.print("Enter FileName for output (Enter 'd'> for default 'output.htm'):");
String fname=scanner.next();
//urlstr="http://localhost:80/kc/test2.php";
if (urlstr.equals("d"))
urlstr="http://khabarchin.com:80/java/test1.php";
if (fname.equals("d"))
fname="output.htm";
System.out.println("****Page Address**** :"+urlstr);
System.out.println("****File Name**** :"+fname);
write_out="<i>****Page Address**** :"+urlstr+"<br></i>";
write_out=write_out+"<i>****File Name**** :"+fname+"</i><br><br>";
try {
URL url = new URL(urlstr);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String htmlText=new String();
//String htmlText;
while ((htmlText = in.readLine()) != null) {
// System.out.println(htmlText);
//---------------------------- Bold -----------------
st=0; end=0;
while (st != -1 && end != -1) {
st = htmlText.indexOf("<b",end); //for <h1>item</h1>
if (st!=-1){ //for <h1 class=xxx>item</h1>
st = htmlText.indexOf(">",st);
}
end = htmlText.indexOf("</b>",end+3);
//System.out.println("b/"+st+"/"+end);
if (st!=-1 && end!=-1 && (st+3<end)){
System.out.println("BOLD> "+htmlText.substring(st+1 , end));
write_out=write_out+"<b>"+htmlText.substring(st+1 , end)+"</b><br>";
}
}
//---------------------------- H1 -----------------
st=0; end=0;
while (st != -1 && end != -1) {
st = htmlText.indexOf("<h1",end); //for <h1>item</h1>
if (st!=-1){ //for <h1 class=xxx>item</h1>
st = htmlText.indexOf(">",st);
}
end = htmlText.indexOf("</h1>",end+4);
//System.out.println("h1/"+st+"/"+end);
if ((st!=-1 && end!=-1) && (st+4<end)){
System.out.println("H1> "+htmlText.substring(st+1 , end));
write_out=write_out+"<h1>"+htmlText.substring(st+1 , end)+"</h1><br>";
}
}
//---------------------------- H2 -----------------
st=0; end=0;
while (st != -1 && end != -1) {
st = htmlText.indexOf("<h2",end); //for <h1>item</h1>
if (st!=-1){ //for <h1 class=xxx>item</h1>
st = htmlText.indexOf(">",st);
}
end = htmlText.indexOf("</h2>",end+4);
//System.out.println("/"+st+"/"+end);
if (st!=-1 && end!=-1 && (st+4<end)){
System.out.println("H2> "+htmlText.substring(st+1 , end));
write_out=write_out+"<h2>"+htmlText.substring(st+1 , end)+"</h2><br>";
}
}
//----------------------
htmlText="";
} // end read line while
writer.writetofile(write_out,fname);//------------ write to file -----------
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
اين سورس برنامه اي است كه چند ماه پيش با كمك همين انجمن اون رو نوشتم و تحويل دادم.
قابل توجه دانشجويان كارشناسي ناپيوسته جهاد دانشگاهي (واحد برنامه نويسي شي گرا).
document:
اين پروژه پس از اجرا يك آدرس url را به عنوان ورودي از كاربر مي خواهد ، كاربر مي تواند با وارد كردن "d" از آدرس url پيش فرض استفاده كند.
طريقه وارد كردن يك آدرس به همراه پورت و صفحه داخلي يك سايت به صورت زير است:
http://khabarchin.com:80/java/test2.php
پس از آن، كاربر بايد يك نام را پس از نمايش پيغام مناسب وارد كند .
در نهايت فايلي با اين نام ساخته شده و موارد يافت شده درون آن قرار مي گيرد.
كاربر مي تواند با وارد كردن "d" از نام فايل پيش فرض استفاده كند (output.htm)
در صورتي كه url وارد شده درست باشد برنامه صفحه مورد نظر را پيمايش كرده و تگهاي bold,h1,h2 را پيدا كرده و در يك متغير از نوع رشته (write_out) ذخيره مي كند.
در صورت پيدا شدن موردي آن را براي اطلاع كاربر روي صفحه نمايش نشان مي دهد. به طور مثال در صورت پيدا كردن يك تگ bold خط زير نمايش داده مي شود.
BOLD> bolditem…………end bolditem
در نهايت فايل مورد نظر با استفاده از كلاس write ساخته شده و متغير write_out براي درج در فايل به متد writetofile از اين كلاس ارسال مي شود.
لازم به توضيح است اين برنامه مي تواند تگهاي زير را از هم تشخيص داده و از نقطه مورد نظر اقدام به چيدن item كند.
<h1>item</h1>
<h1 class=xxx>item</h1>
همچنين اين برنامه قادر به يافتن تعداد بينهايت تگهاي مهم پشت سر هم در يك خط از html سايت است.
با وارد كردن آدرس msn.com هم خوب كار مي كنه
اشكال برنامه اين است كه محتواي سايت رو خط به خط مي خونه و تگهاي چند خطي رو تشخيص نمي ده
/**
*
* @author M.Abdolhoseini
*/
import java.net.*;
import java.io.*;
import java.util.Scanner;
//------------------ creat & write to file class ---------------
class write {
void writetofile(String strw , String fname) {
try {
String fileName = fname;
BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
out.write("\n");
out.write(strw);
System.out.println("<<::<<'"+fname+"' created in default folder>>::>>");
out.close();
} catch (IOException e) {
System.out.println("IOException:");
e.printStackTrace();
}
}
}
//*************************************MAIN********* ******************************
public class Main {
public static void main(String[] args) {
write writer=new write();
int st=0, end=0;
String write_out=new String();
Scanner scanner=new Scanner(System.in);
System.out.println("Example http://khabarchin.com:80/java/test2.php");
System.out.print("Enter URL with 'http://' & port 80(Enter 'd'> for default):");
String urlstr=scanner.next();
System.out.print("Enter FileName for output (Enter 'd'> for default 'output.htm'):");
String fname=scanner.next();
//urlstr="http://localhost:80/kc/test2.php";
if (urlstr.equals("d"))
urlstr="http://khabarchin.com:80/java/test1.php";
if (fname.equals("d"))
fname="output.htm";
System.out.println("****Page Address**** :"+urlstr);
System.out.println("****File Name**** :"+fname);
write_out="<i>****Page Address**** :"+urlstr+"<br></i>";
write_out=write_out+"<i>****File Name**** :"+fname+"</i><br><br>";
try {
URL url = new URL(urlstr);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String htmlText=new String();
//String htmlText;
while ((htmlText = in.readLine()) != null) {
// System.out.println(htmlText);
//---------------------------- Bold -----------------
st=0; end=0;
while (st != -1 && end != -1) {
st = htmlText.indexOf("<b",end); //for <h1>item</h1>
if (st!=-1){ //for <h1 class=xxx>item</h1>
st = htmlText.indexOf(">",st);
}
end = htmlText.indexOf("</b>",end+3);
//System.out.println("b/"+st+"/"+end);
if (st!=-1 && end!=-1 && (st+3<end)){
System.out.println("BOLD> "+htmlText.substring(st+1 , end));
write_out=write_out+"<b>"+htmlText.substring(st+1 , end)+"</b><br>";
}
}
//---------------------------- H1 -----------------
st=0; end=0;
while (st != -1 && end != -1) {
st = htmlText.indexOf("<h1",end); //for <h1>item</h1>
if (st!=-1){ //for <h1 class=xxx>item</h1>
st = htmlText.indexOf(">",st);
}
end = htmlText.indexOf("</h1>",end+4);
//System.out.println("h1/"+st+"/"+end);
if ((st!=-1 && end!=-1) && (st+4<end)){
System.out.println("H1> "+htmlText.substring(st+1 , end));
write_out=write_out+"<h1>"+htmlText.substring(st+1 , end)+"</h1><br>";
}
}
//---------------------------- H2 -----------------
st=0; end=0;
while (st != -1 && end != -1) {
st = htmlText.indexOf("<h2",end); //for <h1>item</h1>
if (st!=-1){ //for <h1 class=xxx>item</h1>
st = htmlText.indexOf(">",st);
}
end = htmlText.indexOf("</h2>",end+4);
//System.out.println("/"+st+"/"+end);
if (st!=-1 && end!=-1 && (st+4<end)){
System.out.println("H2> "+htmlText.substring(st+1 , end));
write_out=write_out+"<h2>"+htmlText.substring(st+1 , end)+"</h2><br>";
}
}
//----------------------
htmlText="";
} // end read line while
writer.writetofile(write_out,fname);//------------ write to file -----------
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}