package link;
import java.io.*;
public class pro {
String[] subname=new String[60];
String[] link_next=new String[60];
String[] link_prev=new String[60];
String[] name_next=new String[60];
String[] name_prev=new String[60];
int number;
String[] time=new String[60];
String[] dic=new String[600];
String[] link=new String[600];
int dicnumber;
String web,namex;
public static void main(String[] args) {
pro te=new pro();
}
pro(){
dicnumber=1;
link[0]="";
link[1]="https://ja.wikipedia.org/wiki/%E3%81%8A%E5%8F%B0%E5%A0%B4%E6%98%8E%E7%9F%B3%E5%9F%8E";
dic[1]="";
int tr=1;
int mode=0;
while(mode<50){
String urlx=link[tr];
link sub=new link();
sub.makedata(urlx);
link_prev=sub.link_prev;
link_next=sub.link_next;
name_prev=sub.name_prev;
name_next=sub.name_prev;
number=sub.subnumber;
time=sub.time;
web=urlx;
writexml("data/"+tr+".txt");
int s,sx;
for(s=1;s<number+1;s++){
int h=0;
for(sx=0;sx<dicnumber+1;sx++){
if(link_prev[s].equals(link[sx]))h=100;
}
if(h<50)dicnumber=dicnumber+1;
if(h<50)link[dicnumber]=link_prev[s];
if(h<50)dic[dicnumber]=name_prev[s];
}
for(s=1;s<number+1;s++){
int h=0;
for(sx=0;sx<dicnumber+1;sx++){
if(link_next[s].equals(link[sx]))h=100;
}
if(h<50)dicnumber=dicnumber+1;
if(h<50)link[dicnumber]=link_next[s];
if(h<50)dic[dicnumber]=name_next[s];
}
namex=dic[tr];
System.out.println(dic[tr]);
tr=tr+1;
if(tr>dicnumber)mode=100;
if(dicnumber>10)mode=100;
}
}
void writexml(String file){
int s,sx;
try{
PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter(file)));
for(s=1;s<number+1;s++){
pw.print(namex);
pw.print(",");
pw.print(web);
pw.print(",");
pw.print(name_prev[s]);
pw.print(",");
pw.print(link_prev[s]);
pw.print(",");
pw.print(name_next[s]);
pw.print(",");
pw.println(link_next[s]);
}
System.out.println("ファイルに書きこみました。");
pw.close();
} catch(IOException ep){ System.out.println("入出力エラーです。"); }
}
}
package link;
import tool.getdata;
public class link {
int s,datanumber;
String[] data=new String[5000];
String[] link=new String[5000];
int[] a=new int[600];
int[] b=new int[600];
String[] tab=new String[5000];
String[] tabx=new String[5000];
String[] name=new String[5000];
String[] web=new String[5000];
String[] next=new String[50];
String[] prev=new String[50];
String[] link_next=new String[50];
String[] link_prev=new String[50];
String[] title=new String[50];
String[] sta=new String[50];
int number;
String[] memo=new String[50];
String[] subname=new String[60];
String[] sublink_next=new String[60];
String[] sublink_prev=new String[60];
String[] name_next=new String[60];
String[] name_prev=new String[60];
int subnumber;
String[] time=new String[60];
void makedata(String urlx){
getdata sub17=new getdata();
sub17.makedata(urlx,"UTF-8");
data=sub17.data;
datanumber=sub17.datanumber;
String str="";
int sx=0;
for(s=1;s<datanumber+1;s++){
if(data[s].indexOf("<table")>-1)sx=sx+1;
if(data[s].indexOf("<table")>-1)a[sx]=s;
}
number=sx;
for(s=1;s<number+1;s++){
int sp=0;
for(sx=a[s];sx<datanumber+1;sx++){
int h=0;
if(data[sx].indexOf("</tab")>-1)h=h+1;
if(sp==0)h=h+1;
if(h==2)sp=sx;
}
b[s]=sp;
}
for(s=1;s<number+1;s++){
str="";
for(sx=a[s];sx<b[s]+1;sx++){
str=str+data[sx];
}
tab[s]=str;
}
sx=0;
for(s=1;s<number+1;s++){
int h=0;
if(tab[s].indexOf("次番組")>-1)h=h+1;
if(tab[s].indexOf("前番組")>-1)h=h+1;
if(h==2)sx=sx+1;
if(h==2)tabx[sx]=tab[s];
}
number=sx;
subnumber=0;
if(number>0){
table sub=new table();
sub.makedata(tabx[1]);
link_prev=sub.sublink_prev;
link_next=sub.sublink_next;
name_prev=sub.name_prev;
name_next=sub.sublink_next;
time=sub.time;
subnumber=sub.number;
}
}
String change(String str){
int n;
for(n=1;n<11;n++){
str=rev(str);
}
str=str.replace(" ","");
return str;
}
String rev(String str){
if(str==null)str="";
int p1=str.indexOf("<");
int p2=str.indexOf(">",p1);
String strx="";
if(p2>-1)strx=str.substring(p1,p2+1);
str=str.replace(strx,"");
return str;
}
}
package link;
public class table {
int s;
String[] sta=new String[60];
String[] name=new String[60];
String[] link_next=new String[60];
String[] link_prev=new String[60];
String[] next=new String[60];
String[] prev=new String[60];
String[] subname=new String[60];
String[] sublink_next=new String[60];
String[] sublink_prev=new String[60];
String[] name_next=new String[60];
String[] name_prev=new String[60];
int number;
String[] time=new String[60];
void makedata(String t){
String[] x=t.split("</tr>");
for(s=0;s<x.length-1;s++){
sta[s]="";
if(x[s].indexOf("枠</span>")>-1)sta[s]=change(x[s]);
if(x[s].indexOf("枠</span>")>-1)x[s]="";
int h=0;
if(x[s].indexOf("前の")>-1)h=h+1;
if(x[s].indexOf("次の番組")>-1)h=h+1;
if(h==2)x[s]="";
}
int sx;
for(s=0;s<x.length-1;s++){
String str="";
if(x[s].length()>0)str=x[s];
String[] y=str.split("</td>");
name[s]="";
link_next[s]="";
link_prev[s]="";
for(sx=0;sx<y.length;sx++){
if(sx==1)name[s]=change(y[sx]);
if(sx==2)link_next[s]=alpha(y[sx]);
if(sx==0)link_prev[s]=alpha(y[sx]);
if(sx==2)next[s]=beta(y[sx]);
if(sx==0)prev[s]=beta(y[sx]);
}
}
for(s=1;s<x.length-1;s++){
if(sta[s].length()<1)sta[s]=sta[s-1];
}
sx=0;
for(s=1;s<x.length-1;s++){
if(name[s].length()>0)sx=sx+1;
if(name[s].length()>0)subname[sx]=name[s];
if(name[s].length()>0)sublink_prev[sx]="https://ja.wikipedia.org"+link_prev[s];
if(name[s].length()>0)sublink_next[sx]="https://ja.wikipedia.org"+link_next[s];
if(name[s].length()>0)name_next[sx]=change(prev[s]);
if(name[s].length()>0)name_prev[sx]=change(next[s]);
if(name[s].length()>0)time[sx]=sta[s];
}
number=sx;
}
String beta(String de){
int p1=de.indexOf("/wiki/");
if(p1>-1)p1=de.indexOf(">",p1);
int p2=-1;
if(p1>-1)p2=de.indexOf("</div>",p1);
String pp="";
if(p2>-1)pp=de.substring(p1+1,p2);
return pp;
}
String alpha(String de){
int p1=de.indexOf("/wiki/");
int p2=-1;
if(p1>-1)p2=de.indexOf("\"",p1);
String pp="";
if(p2>-1)pp=de.substring(p1,p2);
return pp;
}
String change(String str){
int n;
for(n=1;n<11;n++){
str=rev(str);
}
str=str.replace(" ","");
return str;
}
String rev(String str){
if(str==null)str="";
int p1=str.indexOf("<");
int p2=str.indexOf(">",p1);
String strx="";
if(p2>-1)strx=str.substring(p1,p2+1);
str=str.replace(strx,"");
return str;
}
}
最終更新:2016年08月27日 23:41