• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Google Erweiterung, Seite parsen

Cheffchen

Senior HTML'ler
Hallo,

kennt sich jemand damit aus?
Wenn ich das richtig verstanden habe, ist das hauptsächlich Javascript, deswegen dieses Unterforum ;o) , ein bisschen kenne ich mich auch damit aus.
Ich suche eigentlich eine kleine Erweiterung, die immer die Angezeigte Seite dursucht/parst und vorgegebene Wörter markiert mit vielleicht ein * und da ein kleine passende Info hinterlegt ist, per title tag würde voll reichen.

zb: Paris<b title="Frankreich und sprechen nicht Deutsch">*</b>

Das ist ja eigetlich nicht so kompliziert aber was fertiges finde ich nicht und erstellen scheitert einfach daran, das ich von Erweiterung keine Ahnung habe.

kann mir da irgendwie einer helfen wie ich das angehen könnte oder vielleicht sogar so was finde?

Cheffchen
 
Werbung:
Ich suche eigentlich eine kleine Erweiterung, die immer die Angezeigte Seite dursucht/parst und vorgegebene Wörter markiert mit vielleicht ein * und da ein kleine passende Info hinterlegt ist, per title tag würde voll reichen.
Wie meist du das .Willst du auf deiner Seite so was wie eine googelsuche anbieten wo dann die gesuchten Wörter markiert werden ?
Willst du eine Suche bauen die deine Homepage durchsucht und dann die Wörter markiert?
Oder soll die Erweiterung nur für dich sein ? Nur für dein Pc ? Dann würde ich Greasmonkey vorschlagen.
Ansonsten wäre eine kurze erklärung gut wie du was markieren willst und wann und warum.
 
Das letzte (3).
Die Erweiterung soll nur für mein PC sein wo so zu sagen immer die Angezeigte Seite durchsucht wird und die vorgegebenen worte hervorgehoben werden.
Das Greasemonkey scheint das zu sein was ich suche, mal schauen ob ich das zum laufen bekommen, was ich so sehe arbeitet das voll mit javascript, dann sollte das ja alles kein problem sein.

Also erst mal danke für den tipp.
 
Werbung:
Greasmonkey ist Javascript und damit kannst du dir deine Seite so gestallten wie du es möchtest. Für dein vorhaben sollte das wunderbar klappen. Es gibt zwar 3-4 dinge die man da beachten muß aber ist kaum die rede Wert.

Du weißt aber auch das fast jeder Browser so eine ähnliche Suche schon hat ?
Man drückt strg + f und dann kommt ein kleines Suchfed. Wenn du da was reinschreibst wird auf der ganzen Seite danach gesucht und gleichzeitig markiert.
Ist zwar nicht automatisch aber eigentlich auch das was du suchst.
Nagut , wenn du mit den GM Script nicht weiter kommst dann meld dich nochmal und poste deinen Code dazu den du schon geschrieben hast
 
Der tipp war super, habe nur 2 anläufe gebraucht und als ich gesehen habe das jquery auch geht war der rest ein Kinderspiel.
Werde das wohl noch etwas schick machen und ein zwei funktionen draus machen das es übersichtlicher ist aber macht zumindest schon mal das, was ich seit bestimmt 2 Jahren sporatisch suche.
* einfügen mit einer beschreibung
Google Seite > 1542303591398.png

muss jetzt bloss noch schauen eine art black liste, das zb das nicht in Links gemacht wird aber das hat ja nichts mit GM zu tun und da sollte es genügend ansätze geben.

Javascript:
// ==UserScript==
// @name         Beschreibung
// @version      0.1
// @include      https://www.xxxxxx.de*
// @include      https://*
// @require      https://code.jquery.com/jquery-1.9.1.js
// ==/UserScript==


$(document).ready(function(){
var ersetzen= $("body").html()
.replace(/Tina/g,'Tina<b title="Groß und Blond">*</b>')
.replace(/André/g,'André<b title="Trinkt gerne ein">*</b>')
.replace(/Paris/g,'Paris<b title="Ein kleiner Ort">*</b>')
;
$("body").html(ersetzen);
});

Super Danke
 
Das ist schön wenn es soweit schon klappt.
muss jetzt bloss noch schauen eine art black liste, das zb das nicht in Links gemacht wird aber das hat ja nichts mit GM zu tun und da sollte es genügend ansätze geben.
Wie meinst du das?
So das deine gesuchte Worte nicht in einen Link stehen ?
Ich würde es vieleicht so versuchen das bei einen gefunden Worte zurück gehst bis zum ( < , <a ) und auch gleichzeitig vor bis ( > , </a> ) und wenn das Tag dann ein A ist überspringst du es einfach.
Das sollte eigentlich klappen, oder meintest du es anders mit Links ?
Fals du bestimmte Seiten kommplett auslassen willst beim suchen gibt es auch noch // @exclude http*://*beispiel.de*
 
Werbung:
Hallo,
was soll ich sagen mit tampermonkey ging es halb weges aber nicht ganz, zuerst habe ich einfach ein array mit replace durch die ganze seite gejagt, dann ein fertigen script genommen und minimal angepasst, soweit mir möglich.
Soweit funktioniert das auch im Forum aber da leider auch einiges in FB passiert sollte es da auch passen aber da scheint FB das zu blocken bzw. funktioniert FB dann nicht mehr richtig und inhalte werden nicht mehr nachgeladen zb Antwortpfad öffnen. Das Bei dem jetzt hier html tags als text eingefügt wird und nicht als tag ist ein anderes Thema, was kein sin macht so lang das bei FB so wie so nicht geht.

Schade aber dennoch echt Danke für dein versuch mir zu helfen.

Cheffchen

Javascript:
// ==UserScript==
// @name           Replace Text On Webpages (bearbeitet)
// @namespace      http://userscripts.org/users/23652
// @description    Replaces text on websites. Now supports wildcards in search queries. Won't replace text in certain tags like links and code blocks
// @include        http://*
// @include        https://*
// @include        file://*
// @exclude        http://userscripts.org/scripts/review/*
// @exclude        http://userscripts.org/scripts/edit/*
// @exclude        http://userscripts.org/scripts/edit_src/*
// @exclude        https://userscripts.org/scripts/review/*
// @exclude        https://userscripts.org/scripts/edit/*
// @exclude        https://userscripts.org/scripts/edit_src/*
// @copyright      JoeSimmons
// @version        1.1.0
// @license        http://creativecommons.org/licenses/by-nc-nd/3.0/us/
// ==/UserScript==
(function () {
    'use strict';


    /*
        NOTE:
            You can use \\* to match actual asterisks instead of using it as a wildcard!
            The examples below show a wildcard in use and a regular asterisk replacement.
    */

    var words = {
    ///////////////////////////////////////////////////////


        // Syntax: 'Search word' : 'Replace word',
        'Hans Gustav' : 'der Chef im Haus',
        'Otto Paff' : "Linke Hand vom Chef oder hat immer recht",
        'Tina' : 'JA GENAU',
        // 'im\\*o' : 'matching an asterisk, not a wildcard',
        // '/\\bD\\b/g' : '[D]',


    ///////////////////////////////////////////////////////
    '':''};


    //////////////////////////////////////////////////////////////////////////////
    // This is where the real code is
    // Don't edit below this
    //////////////////////////////////////////////////////////////////////////////

    var regexs = [], replacements = [], forplacements = [],
        tagsWhitelist = ['PRE', 'BLOCKQUOTE', 'CODE', 'INPUT', 'BUTTON', 'TEXTAREA'],
        rIsRegexp = /^\/(.+)\/([gim]+)?$/,
        word, text, texts, i, userRegexp;

    // prepareRegex by JoeSimmons
    // used to take a string and ready it for use in new RegExp()
    function prepareRegex(string) {
        return string.replace(/([\[\]\^\&\$\.\(\)\?\/\\\+\{\}\|])/g, '\\$1');
    }

    // function to decide whether a parent tag will have its text replaced or not
    function isTagOk(tag) {
        return tagsWhitelist.indexOf(tag) === -1;
    }

    delete words['']; // so the user can add each entry ending with a comma,
                      // I put an extra empty key/value pair in the object.
                      // so we need to remove it before continuing

    // convert the 'words' JSON object to an Array
    for (word in words) {
        if ( typeof word === 'string' && words.hasOwnProperty(word) ) {
            userRegexp = word.match(rIsRegexp);

            // add the search/needle/query
            if (userRegexp) {
                regexs.push(
                    new RegExp(userRegexp[1], 'g')
                );
            } else {
                regexs.push(
                    new RegExp(prepareRegex(word).replace(/\\?\*/g, function (fullMatch) {
                        return fullMatch === '\\*' ? '*' : '[^ ]*';
                    }), 'g')
                );
            }

            // add the replacement
            replacements.push( words[word] );
            forplacements.push( word );
        }
    }

    // do the replacement
    texts = document.evaluate('//body//text()[ normalize-space(.) != "" ]', document, null, 6, null);
    for (i = 0; text = texts.snapshotItem(i); i += 1) {
        if ( isTagOk(text.parentNode.tagName) ) {
            regexs.forEach(function (value, index) {
                text.data = text.data.replace( value, forplacements[index]+' <i title="'+replacements[index]+'">*</i> ' );
            });
        }
    }

}());
 
Eigentlich sollte das bei Facebook auch laufen. Da Facebook aber viel mit Scripten und Ajax nachläd und so weiter,denke ich mal das noch ein paar anpassungen nötig sind. Vor allem brauchst du irgendwas der das nachladen erkennt , oder mit Interval arbeiten.
Bevor ich aber quatsch erzähle probiere ich das morgen mal aus.

Was funktioniert den bei Facebook ? Wird da gar nix erkannt ? Schmeißt das Script irgend welche Fehler raus?
 
der script funktioniert so weit, nur sobald FB halt was nach laden solte wie bei zb "33 weitere Kommentare anzeigen" anzeigen passiert nichts, kommt auch kein fehler in der console.
bei weiter scrollen funktioniert das komisch, nur halt beiträge öffen nicht.

(ich muss mal die einstellen hier schecken, ich bekomme keine benachrichtigungen mehr)

Cheffchen
 
Werbung:
Es hat mit doch keine ruhe gelassen und der fehler war das wann, jetzt wird der script mit "$(document).on("scroll",_filterAll);" aufgerufen und siehe da jetzt funktioniert, fast :eek:).

jetzt habe ich bloss noch das eine Problem (habe ich seit anfang) das html zeichen nicht als solchen ersetzt/eingefügt werden sondern geparst angezeigt, also aus <i> wird nicht kursiv, sondern das <i> wird so angezeigt.

wenn das funktioniert würde ich dann was zusammenbasteln, das per hover text angezeigt werden aber dazu muss halt html zeichen eingefügt werden.
Fast am ende seht ihr meine Test
text.data = text.data.replace( value, '\<i\> <i title="'+replacements[index]+'">*</i>&#169;');
das ersetzt dann im Browser das bei " ist " es soll aber ein * mit hover text sein.
<i> <i title=" IST ">*</i>&#169;

Kann da einer mal schauen ob das nur eine kleinigkeit ist, die ich einfach übersehen?

Cheffchen

ps: benachtichtigungen über antworten bekommen ich immer noch nicht, keine ahnung, früher ging das finde auch kein falschen haken?

Javascript:
// ==UserScript==
// @name         Facebook Filter
// @match        https://www.facebook.com/*
// @require      https://code.jquery.com/jquery-2.1.4.min.js
// @grant        none
// ==/UserScript==

$(function() {
    'use strict';
console.log('test');

    filterAll();
    _filterAll();
    $(document).on("scroll",_filterAll);


    function filterAll(){
        //setTimeout(_filterAll,300);
    }
    function _filterAll(){

    'use strict';


    /*
        NOTE:
            You can use \\* to match actual asterisks instead of using it as a wildcard!
            The examples below show a wildcard in use and a regular asterisk replacement.
    */

    var words = {
    ///////////////////////////////////////////////////////


        // Syntax: 'Search word' : 'Replace word',
        ' und ' : ' UND',
        'ist ' : ' IST ',


        // 'im\\*o' : 'matching an asterisk, not a wildcard',
        // '/\\bD\\b/g' : '[D]',


    ///////////////////////////////////////////////////////
    '':''};


    //////////////////////////////////////////////////////////////////////////////
    // This is where the real code is
    // Don't edit below this
    //////////////////////////////////////////////////////////////////////////////

    var regexs = [], replacements = [], forplacements = [],
        tagsWhitelist = ['PRE', 'BLOCKQUOTE', 'CODE', 'INPUT', 'BUTTON', 'TEXTAREA'],
        rIsRegexp = /^\/(.+)\/([gim]+)?$/,
        word, text, texts, i, userRegexp;

    // prepareRegex by JoeSimmons
    // used to take a string and ready it for use in new RegExp()
    function prepareRegex(string) {
        return string.replace(/([\[\]\^\&\$\.\(\)\?\/\\\+\{\}\|])/g, '\\$1');
    }

    // function to decide whether a parent tag will have its text replaced or not
    function isTagOk(tag) {
        return tagsWhitelist.indexOf(tag) === -1;
    }

    delete words['']; // so the user can add each entry ending with a comma,
                      // I put an extra empty key/value pair in the object.
                      // so we need to remove it before continuing

    // convert the 'words' JSON object to an Array
    for (word in words) {
        if ( typeof word === 'string' && words.hasOwnProperty(word) ) {
            userRegexp = word.match(rIsRegexp);

            // add the search/needle/query
            if (userRegexp) {
                regexs.push(
                    new RegExp(userRegexp[1], 'g')
                );
            } else {
                regexs.push(
                    new RegExp(prepareRegex(word).replace(/\\?\*/g, function (fullMatch) {
                        return fullMatch === '\\*' ? '*' : '[^ ]*';
                    }), 'g')
                );
            }

            // add the replacement
            replacements.push( words[word] );
            forplacements.push( word );
        }
    }

    // do the replacement
    texts = document.evaluate('//body//text()[ normalize-space(.) != "" ]', document, null, 6, null);
    for (i = 0; text = texts.snapshotItem(i); i += 1) {
        if ( isTagOk(text.parentNode.tagName) ) {
            regexs.forEach(function (value, index) {
                //text.data = text.data.replace( value, forplacements[index]+' <i title="'+replacements[index]+'">*</i> ' );
                text.data = text.data.replace( value, '\<i\> <i title="'+replacements[index]+'">*</i>&#169;');
            });
        }
    }
    }
});
 
Zurück
Oben