plasmaParser erkennt nicht alle Links auf einer Seite

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

plasmaParser erkennt nicht alle Links auf einer Seite

Beitragvon celle » So Mär 08, 2009 1:15 pm

Hallo,

ich habe ein Problem festgestellt. Und zwar erkennt der plasmaParser Hyperlinks in Überschriften nicht.

Code: Alles auswählen
<html>
<h3 class=r>
<a href="http://www.autoscout24.de/">AutoScout24 Europas Automarkt für Gebrauchtwagen und  Neuwagen</a>
</h3>
<a href="http://www.test.de">Test</a>
<a href="/index.html">Index</a>
</html>


In dem obigen Testdukument sollten alle Links erkannt werden, jedoch wird "http://www.autoscout24.de/" nicht erkannt.

Ich habe dafür eine Testklasse geschrieben um das zu testen.

Code: Alles auswählen
public class parserTest {

   /**
    * @param args
    */
   public static void main(String[] args) {
      try {
         File datei = new File("c:\\test2.html");
         yacyURL url = new yacyURL("http://google.de/test.html", "a");
         byte[] cacheArray = new byte[(int)datei.length()];
            FileInputStream fsream = new FileInputStream(datei);
            fsream.read(cacheArray);
            plasmaParser parser = new plasmaParser();
           
            plasmaParser.initHTMLParsableMimeTypes("text/html");
            plasmaParser.initParseableMimeTypes(plasmaParser.PARSER_MODE_PROXY, "test/html");
           
            plasmaParserDocument document = null;
           document = parser.parseSource(url, "text/html", "UTF-8", cacheArray);
           if (document != null){
              System.out.println(new String(document.getTextBytes()));
               final Map<yacyURL, String> hl = document.getHyperlinks();
               final Iterator<Map.Entry<yacyURL, String>> i = hl.entrySet().iterator();
               yacyURL nextUrl;
               Map.Entry<yacyURL, String> nextEntry;
               while (i.hasNext()) {
                  // fetching the next hyperlink
                  nextEntry = i.next();
                  nextUrl = nextEntry.getKey();
                  System.out.println(nextUrl);
               }
           }
        } catch (Exception e) {
           System.out.println(e.toString());
        };

   }

}


Ich habe versucht das Problem zu lokalisieren. Das war nicht einfach und ich weiß nichtmal ob das stimmt. Es scheint in htmlFilterContentScarper->scrapeTag1 zu sein. Da dort die Überschriften erkannt werden, jedoch nicht untersucht wird, on der Inhalt der Überschrift ein Link ist. Kann sich das bitte jemand anschauen?

Ich habe das lokal erstmal so gelöst, dass ich am Ende der Methode prüfe, ob der Inhalt ein Link war und das dann entsprechend bearbeite.

Code: Alles auswählen
char[] text2 = (cleanLine(new String(text))).toCharArray();
if (text2.length > 1 && text2[0] == lb && text2[1] == 'a'){
  final serverCharBuffer scb = new serverCharBuffer(new String(text2).substring(3).toCharArray());
  Properties prop = scb.propParser();
  scrapeTag1("a", prop, new char[1]);
}


tschüss

celle
celle
 
Beiträge: 47
Registriert: Mi Jun 27, 2007 11:52 am

Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron