Varias tarjetas de resultados de búsqueda se conectan con un único índice de páginas separado.
Conserve las observaciones de búsqueda al combinar las direcciones de las páginas.

Configure la versión 1.0.15 de Google Search Scraper de Apify: reemplace por completo las listas guardadas de consultas de ejemplo y motores por la frase de consulta que desea usar y `["bing"]`, con este JSON de entrada: `{"queries": ["Python asyncio documentation"], "engines": ["bing"], "maxResultsPerExecutedQuery": 2, "country": "US", "language": "en", "safeSearch": true, "includeSponsoredResults": false}`. Tenga en cuenta que la versión pública 1.0.15 admite varios motores, pero aquí solo Bing pasó la prueba de aceptación; las vías de Google, Brave y DuckDuckGo quedan pendientes o excluidas. Los recuentos del resumen de ejecución en OUTPUT de la prueba de control indican: `queriesRequested`: 1, `searchesCompiled`: 1, `executionsPlanned`: 1, `enginesSuccessful`: 1, `enginesFailed`: 0, `pagesAttempted`: 1, `pagesParsed`: 1, `resultsSaved`: 2, `engineStatusCounts`: {"bing": {"ok": 1}}, `engineResultCounts`: {"bing": 2}, `queryResultCounts`: {"Python asyncio documentation": 2}, `stopReason`: "result_caps_reached". Estos recuentos del resumen de ejecución reflejan los totales de ejecución del extractor, no las filas por destino. Esto confirmó, dentro de un alcance limitado, la compatibilidad con las URL, las posiciones y la procedencia de Bing. No confirmó la compatibilidad con otros motores que no pasaron la prueba de aceptación, otros mercados ni la obtención de contenido de los destinos.

1. Defina las reglas de recolección

  1. Defina las reglas de recolección: reemplace por completo las listas guardadas de consultas y motores por una frase de consulta que desea usar y `["bing"]`, `maxResultsPerExecutedQuery: 2`, Estados Unidos como país, inglés como idioma, `safeSearch: true` e `includeSponsoredResults: false`. No se prescribe ningún parámetro público de entrada para limitar las páginas.
  2. Guarde las filas originales de resultados de Bing y los metadatos de OUTPUT. Los campos nativos de cada fila incluyen `runId`, `country`, `language`, `safeSearch`, `engine`, `executedQuery`, `page`, `rankOnPage`, `rank`, `title`, `canonicalUrl`, `resultDomain`, `snippet`, `isSponsored`, `advertiserDomain`, `observedAt` y `schemaVersion`. Conserve toda la información que identifica la ejecución y su configuración.
  3. Construya una clave de observación con `runId` + `engine` + `executedQuery` + `page` + `rankOnPage`. Conserve rank y observedAt como evidencia. Elimine de la tabla de trabajo las filas exportadas que sean duplicados exactos y deje constancia de esos duplicados. Si una clave repetida tiene valores de URL en conflicto, conserve ambos candidatos pendientes de revisión de la fuente, en vez de elegir uno sin dejar constancia o confiar en la mayoría.
  4. Cree una clave de destino a partir del `canonicalUrl` devuelto, que es una dirección candidata normalizada, no una prueba de la URL canónica HTML ni el href original. Empiece con las cadenas de URL exactas que se devolvieron. Si normaliza el uso de mayúsculas y minúsculas del nombre de host, los fragmentos o los parámetros de seguimiento, registre por qué el destino sigue siendo el mismo. Las rutas o los parámetros de consulta diferentes se mantienen separados.
  5. Vincule las observaciones con la tabla de destinos mediante una columna de clave de destino. Una misma URL encontrada mediante 2 consultas o en 2 momentos tiene varias observaciones y un único destino revisado. La asociación con una consulta se basa únicamente en observaciones reales.
  6. Exporte las tablas de trabajo sin alterar los datos. Conserve las comillas, las comas, los saltos de línea y los caracteres Unicode de las consultas. Use JSON o JSONL sin procesar como referencia principal, porque los exportadores o importadores de CSV pueden perder la distinción entre valores nulos y vacíos. Compruebe que la exportación y la posterior importación conserven los valores exactos mediante un caso de prueba pequeño antes de combinar exportaciones grandes.
  7. Informe por separado los recuentos de filas originales, filas exportadas duplicadas, observaciones válidas distintas, conflictos y claves de destino distintas. Las URL únicas o sus asociaciones con consultas no permiten estimar el volumen total de búsquedas ni la totalidad de los sitios web. Incluya las búsquedas fallidas, vacías o que alcanzaron un límite en el registro de recolección.
  8. Pase las direcciones de destino y las referencias de las observaciones a una comprobación de destinos separada. La combinación de recursos no demuestra que se pueda acceder a las páginas, que sean pertinentes ni que las fuentes sean confiables. Indique expresamente que el alcance se limita a Bing.

Registro ficticio de combinación y comprobación de datos

*Nota: Las siguientes tablas y registros son ejemplos ficticios originales creados con fines educativos.*

Imagine una prueba en la que la ejecución R1 con la consulta "AI agents" devuelve U1 en la posición 1 y U2 en la posición 2. La ejecución R1 con la consulta "small business automation" devuelve U2 en la posición 1 y U3 en la posición 2. La ejecución R2 con la consulta "AI agents" devuelve U1 en la posición 1 y U4 en la posición 2. Todos son resultados de Bing con una configuración declarada como idéntica y con sus propios momentos de observación. Las 6 claves de observación se vinculan con 4 claves de destino: U1, U2, U3 y U4. U1 tiene 2 observaciones en distintos momentos; U2 tiene 2 observaciones de distintas consultas. Ninguna de estas repeticiones es una fila exportada duplicada.

Una séptima fila original repite exactamente R1 / consulta "AI agents" / página 1 / posición 2 U2 y copia cada valor original sin cambios, como una fila exportada duplicada. Una octava fila con esa misma clave contiene U9. La clave R1+bing+AI agents+1+2 presenta un conflicto TANTO para U2 COMO para U9; conserve ambos valores candidatos pendientes de revisión en el registro de conflictos, en vez de confiar en el primero o en la mayoría. Se conservan 8 filas originales, 1 fila exportada duplicada, 6 claves de observación, 1 clave en conflicto, 5 observaciones sin conflicto y 4 destinos aceptados. U9 queda fuera de los destinos aceptados.

*Tabla de ejemplo ficticio original con 8 filas originales.*

Registro ficticio de combinación y comprobación de datos
RowIdRunIdEngineExecutedQueryPageRankOnPageCanonicalUrlObservedAt
1R1bingAI agents11U12026-10-13T06:20:15Z
2R1bingAI agents12U22026-10-13T06:20:15Z
3R1bingsmall business automation11U22026-10-13T06:21:00Z
4R1bingsmall business automation12U32026-10-13T06:21:00Z
5R2bingAI agents11U12026-10-13T07:00:15Z
6R2bingAI agents12U42026-10-13T07:00:15Z
7R1bingAI agents12U22026-10-13T06:20:15Z
8R1bingAI agents12U92026-10-13T06:20:15Z

*Tabla de ejemplo ficticio original con el estado de 6 claves.*

Registro ficticio de combinación y comprobación de datos
ObservationKeyCandidateCanonicalUrlEstado / situación
R1+bing+AI agents+1+1U1Sin conflicto
R1+bing+AI agents+1+2U2, U9Pendiente por conflicto (ambos candidatos quedan pendientes de revisión; la fila 7 deja constancia del duplicado exportado)
R1+bing+small business automation+1+1U2Sin conflicto
R1+bing+small business automation+1+2U3Sin conflicto
R2+bing+AI agents+1+1U1Sin conflicto
R2+bing+AI agents+1+2U4Sin conflicto

*Tabla de referencia de destinos de un ejemplo ficticio original (4 destinos aceptados).*

Registro ficticio de combinación y comprobación de datos
TargetKeyReferencias de observaciones sin conflictoEstado
U1R1 AI agents posición 1, R2 AI agents posición 1Sin conflicto
U2R1 small business automation posición 1Sin conflicto (el conflicto de R1 AI agents posición 2 queda pendiente de revisión)
U3R1 small business automation posición 2Sin conflicto
U4R2 AI agents posición 2Sin conflicto

*Caso de prueba CSV ficticio original con un salto de línea dentro de un campo, comillas duplicadas, café con caracteres Unicode y una consulta con coma:*

Fragmento de código

text
runId,engine,executedQuery,page,rankOnPage,title,canonicalUrl
"R1","bing","garden, tray",1,1,"Café guide
""Best picks""","https://example.com/garden"
Registro ficticio de combinación y comprobación de datos

*Valores decodificados del caso de prueba y comprobación para el lector:* El campo de consulta se decodifica como `garden, tray`; el campo de título se decodifica como `Café guide`, seguido de un salto de línea real y un único par de comillas alrededor de `Best picks`; y canonicalUrl se decodifica como la cadena de texto simple `https://example.com/garden` sin sintaxis Markdown. Una comprobación de exportación y posterior importación realizada por el lector confirma que se conservan correctamente la separación por comas, los saltos de línea dentro de los campos, los pares únicos de comillas y los caracteres Unicode. Toda afirmación de que se completó un análisis sintáctico, una escritura o una lectura con Python se aplica únicamente a este caso de prueba ficticio, nunca a una exportación de un Actor ni a un conjunto de datos grande.

Fuentes y lecturas adicionales

Por Chronometrica · Actualizado

Volver arriba ↑