folder Tahribat.com Forumları
linefolder Java
linefolder Java Se İle İso-8859-9 Karakter Kodlu Html Sayfa Çekip Kaydetmek [Çözüldü]



Java Se İle İso-8859-9 Karakter Kodlu Html Sayfa Çekip Kaydetmek [Çözüldü]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Evet soru açık;

    java se ile iso-8859-9 karakter encode'lu sayfayı alıp sayfa.html olarak kaydetmek istiyorum. Sıkıntı şu ki iso-8859-9 karakter kodlamalı sayfanın içeriğinde özel karakterler hep sorunlu çıkıyor. sayfa.html olarak kaydedip utf-8 olarak veya iso-8859-9 olarak görüntülemeye çalışıyorum sublime-text de, ancak başarılı olamadım.

     

    Şunuda belirteyim, çektiğim dosyanın içeriğinde reg-exp ile değişikliklerde yapacağım.

     

     

            URLConnection connection = null;
            try {
              connection =  new URL("http://forum.memurlar.net/konu/2143287/1.sayfa").openConnection();
              Scanner scanner = new Scanner(connection.getInputStream());
              scanner.useDelimiter("\\Z");
              siteContent = scanner.next();
            }catch ( Exception ex ) {
                ex.printStackTrace();
            }
            //site içeriği alındı şimdi mesaj sayisi ve sayfa sayisi alinsin.
            byte[] bytes = siteContent.getBytes("ISO-8859-9");
            System.out.println(new String(bytes));

     

     

    Regexp ile şu şekilde arama yapıyorum.

     

     

    String pattern = "Toplam (\\d+) mesaj";
    
            // Create a Pattern object
            Pattern r = Pattern.compile(pattern);
    
            // Now create matcher object.
            Matcher m = r.matcher(MemurlarNetKonuIndirici.siteContent);
            if (m.find()) {
               MemurlarNetKonuIndirici.mesajSayisi = Integer.parseUnsignedInt(m.group(1));
            } else {
               System.out.println("NO MATCH");
            }

     

     

    Bu karakter sorununu çözemedim. Başka dil olmaz mı demeyin, javada yapmam lazım.

    DrKill tarafından 11/Nis/16 02:48 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    scanner neden kullaniyorsun hocam inputreader kullanip dener misin?

    http://stackoverflow.com/questions/4964640/reading-inputstream-as-utf-8

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurulmac11
    nurulmac11's avatar
    Kayıt Tarihi: 04/Ağustos/2012
    Erkek

    sorunun cevabını bilmiyorum ama şu kütüphane çok iş görüyo: 

    jsoup Java HTML Parser, with best of DOM, CSS, and jquery

    jsoup.org/

    black implies white, self implies other, life implies death.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Tamam gençler şu şekilde hallettim. Çok efektif olmadı aslında ama lazım olur diye yazıyorum. Her sayfa çağrımı için threadler kullanılabilir.

     

    Teşekkürler yardımlar için.

     

            String getCharsetPattern = "charset\\s*=[\\s\"']*([^\\s\"'/>]*)";
            siteContent = new String();
            URL url = new URL("http://forum.memurlar.net/konu/XXXXXXXX/1.sayfa");
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), pageCharset));
            //BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
            LinkedList lines = new LinkedList();
            String readLine;
    
            while ((readLine = in.readLine()) != null) {
                lines.add(readLine);    //satır satır okuyoruz
            }
            PrintWriter out2 = new PrintWriter("memurlar.html");
            for (String line : lines) {
                //out2.println(line);
                siteContent += "\n"+line;
            }   //site içeriği alındı
            
            
            Pattern r = Pattern.compile(getCharsetPattern);
            Matcher m = r.matcher(MemurlarNetKonuIndirici.siteContent);
            if (m.find()) { //karakter kodlamasını utf-8 olarak değiştir.
                siteContent = siteContent.replaceFirst(m.group(1), "utf-8");
               
            } else {
               System.out.println("NO MATCH");
            }
            out2.print(siteContent);
            out2.close();

     

     

     

    DrKill tarafından 11/Nis/16 02:47 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
Toplam Hit: 2547 Toplam Mesaj: 4
java bot karakter kodlama