es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo reordenar los resultados de Google después de una búsqueda? Quiero crear una extensión que pueda reorganizar los resultados de una búsqueda en Google.

Estoy tratando de crear una extensión que pueda reorganizar los resultados de Google si busco algo como “cómo hacer un avión de papel”. En este momento, solo quiero poder cambiar el orden de 2 enlaces. Por ejemplo, mi código actual:

var xpath = function(xpathToExecute){
  var result = [];
  var nodesSnapshot = document.evaluate(xpathToExecute, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
  for ( var i=0 ; i < nodesSnapshot.snapshotLength; i++ ){
    result.push( nodesSnapshot.snapshotItem(i) );
  }
  return result;
}

var xps = xpath('//*[@id="rso"]/div')

finalDivs = []

for (var i = 0; i < xps.length; i += 1 ) {
    if (xps[i].className == 'g' || xps[i].className == 'hlcw0c') {
        finalDivs.push(xps[i])
    }
}

Esto me permite obtener un objeto con todas las etiquetas div relevantes. Luego puedo asignar a cada div una clasificación creando otro objeto, pero no estoy seguro de cómo puedo reordenar los resultados de búsqueda en función de estos resultados. ¿Hay alguna manera de reinyectar el orden de los div nuevamente en la página web en la que me encuentro? El código que estoy usando actualmente se coloca en la pestaña “Sources” de la siguiente manera:

Where code is being run

¡Cualquier orientación es muy apreciada!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para reordenar los resultados de búsqueda de Google en función de tus clasificaciones, deberás crear una función que tome los elementos div ordenados finalmente e inyectarlos de vuelta en la página de resultados de búsqueda. Puedes hacer esto eliminando los elementos de resultados de búsqueda existentes del DOM y agregando los elementos div ordenados en el orden deseado.

    Aquí tienes un ejemplo de implementación:

    var reorderSearchResults = function(finalDivs) {
      var searchResultsContainer = document.getElementById("search"); // ID del contenedor de los resultados de búsqueda
      var searchResultDivs = searchResultsContainer.querySelectorAll("div.g, div.hlcw0c"); // Selecciona solo los elementos div relevantes de los resultados de búsqueda
    
      // Elimina los elementos div originales de los resultados de búsqueda del DOM
      for (var i = 0; i < searchResultDivs.length; i++) {
        searchResultsContainer.removeChild(searchResultDivs[i]);
      }
    
      // Agrega los elementos div ordenados al contenedor de resultados de búsqueda en el orden deseado
      for (var i = 0; i < finalDivs.length; i++) {
        searchResultsContainer.appendChild(finalDivs[i]);
      }
    };
    

    Luego puedes llamar a esta función con tu array de elementos div ordenados después de haber asignado a cada div una clasificación. Por ejemplo:

    var xps = xpath('//*[@id="rso"]/div');
    var finalDivs = [];
    
    for (var i = 0; i < xps.length; i++) {
      if (xps[i].className == 'g' || xps[i].className == 'hlcw0c') {
        finalDivs.push(xps[i]);
      }
    }
    
    reorderSearchResults(finalDivs);
    

    Asegúrate de que tu extensión de Google Chrome también tenga permiso para modificar el DOM de la página de resultados de búsqueda de Google. Puedes hacer esto agregando el campo "permissions" a tu archivo manifest.json:

    {
      "name": "Mi Extensión",
      "version": "1.0",
      "manifest_version": 2,
      "permissions": [
        "https://www.google.com/*"
      ],
      "content_scripts": [
        {
          "matches": [
            "https://www.google.com/*"
          ],
          "js": [
            "myscript.js"
          ]
        }
      ]
    }
    

    Con esta configuración, el archivo myscript.js de tu extensión podrá modificar la página de resultados de búsqueda de Google.

Comments are closed.