コンテンツ/タイプがtext/htmlのすべてのURLを取得できますが、コンテンツ/タイプがtext/htmlでないURLを必要とする場合。それではどうすればそれを確認できますか?文字列のためとして、我々はcontains
メソッドを使用することができますが、それはnotcontains
ようなものを持っていません。..任意の提案は理解されるであろう...そしてまたコンテンツタイプがtext/htmlでないクロールでURLを取得する
The key variable contains:
Content-Type=[text/html; charset=ISO-8859-1]
これは、以下のtext/htmlのをチェックするためのコードとIですtext/htmlではないcontent-typeも試しましたが、content-typeもtext/htmlのものも表示します。
try {
URL url1 = new URL(url);
System.out.println("URL:- " +url1);
URLConnection connection = url1.openConnection();
Map responseMap = connection.getHeaderFields();
Iterator iterator = responseMap.entrySet().iterator();
while (iterator.hasNext())
{
String key = iterator.next().toString();
if (key.contains("text/html") || key.contains("text/xhtml"))
{
System.out.println(key);
// Content-Type=[text/html; charset=ISO-8859-1]
if (filters.matcher(key) != null){
System.out.println(url1);
try {
final File parentDir = new File("crawl_html");
parentDir.mkdir();
final String hash = MD5Util.md5Hex(url1.toString());
final String fileName = hash + ".txt";
final File file = new File(parentDir, fileName);
boolean success =file.createNewFile(); // Creates file crawl_html/abc.txt
System.out.println("hash:-" + hash);
System.out.println(file);
// Create file if it does not exist
// File did not exist and was created
FileOutputStream fos = new FileOutputStream(file, true);
PrintWriter out = new PrintWriter(fos);
// Also could be written as follows on one line
// Printwriter out = new PrintWriter(new FileWriter(args[0]));
// Write text to file
Tika t = new Tika();
String content= t.parseToString(new URL(url1.toString()));
out.println("===============================================================");
out.println(url1);
out.println(key);
out.println(success);
out.println(content);
out.println("===============================================================");
out.close();
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TikaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// http://google.com
}
}
else if (!connection.getContentType().startsWith("text/html"))//print duplicate records of each url
//else if (!key.contains("text/html"))
{
if (filters.matcher(key) != null){
try {
final File parentDir = new File("crawl_media");
parentDir.mkdir();
final String hash = MD5Util.md5Hex(url1.toString());
final String fileName = hash + ".txt";
final File file = new File(parentDir, fileName);
// Create file if it does not exist
boolean success =file.createNewFile(); // Creates file crawl_html/abc.txt
System.out.println("hash:-" + hash);
Tika t = new Tika();
String content_media= t.parseToString(new URL(url1.toString()));
// File did not exist and was created
FileOutputStream fos = new FileOutputStream(file, true);
PrintWriter out = new PrintWriter(fos);
// Also could be written as follows on one line
// Printwriter out = new PrintWriter(new FileWriter(args[0]));
// Write text to file
out.println("===============================================================");
out.println(url1);
out.println(key);
out.println(success);
out.println(content_media);
//out.println("===============================================================");
out.close();
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TikaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("=============");
}
}
一つの方法は、それがアプリケーション/ PDF
if (key.contains("application/pdf")
とXMLのための同じように...しかし、これ以外の任意の他の方法でPDFファイルのためのように、各コンテンツ・タイプごとに個別にチェックすることです...
これは動作しません。また、content-typeがtext/htmlのリンクも取ります。その他のアイデア..また、text/htmlとnon text/htmlが使用されています。 – ferhan
このようにしますか? getContentTypeが "["も返す場合は、getContentType.substring(1)を使用してそれを取り除きます。 – emboss
これは動作していますが、重複したレコードを印刷しています。特定のURLについては、応答に多数のヘッダーがあります。それぞれのヘッダーがあり、ヘッダーが 'text/html'で始まらない場合は、そのURLを出力します。text/html以外の特定のURLには8ヘッダーが含まれていれば、そのURLを出力します8私が言っていることを理解したいと思っています。 – ferhan