Data tables are removed as "unlikely candidates" when a class name contains "header" (e.g. Wikipedia's plainrowheaders)
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript
- Área
- web-dev
Línea de trabajo
Empieza con la comprobación de candidatos improbables en _grabArticle y las pruebas existentes sobre la eliminación de candidatos y las tablas. Reproduce el problema con el ejemplo proporcionado y luego verifica que se conserve una tabla con una clase header y marcadores de tabla de datos, mientras que las tablas de diseño sigan recibiendo la limpieza condicional existente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
A data table whose class contains header is removed whole by the unlikely-candidate pass in _grabArticle, because REGEXPS.unlikelyCandidates matches header anywhere in the class string. Wikipedia uses class="wikitable sortable plainrowheaders" on many award, filmography and discography tables, so those tables disappear from the output.
Elements inside a table are already exempt (!this._hasAncestorTag(node, "table")), but the <table> element itself is not.
Steps to reproduce
Readability 0.6.0 with jsdom 26.1.0 (the same check exists on main at ab4027a8):
import { Readability } from "@mozilla/readability";
import { JSDOM } from "jsdom";
const para = (n) => Array.from({ length: n }, (_, i) =>
`<p>Paragraph ${i} of the article, long enough to be scored as content, with commas, clauses, and ordinary prose like a real page.</p>`).join("\n");
const table = (cls) => `<table class="${cls}"><caption>Awards</caption>
<tr><th>Award</th><th>Result</th></tr>
<tr><th scope="row">Academy Awards</th><td>Nominated</td></tr>
<tr><th scope="row">Annie Awards</th><td>Won</td></tr></table>`;
const run = (body) => new Readability(
new JSDOM(`<!doctype html><html><body><article>${body}</article></body></html>`).window.document
).parse().content;
for (const cls of ["wikitable", "wikitable plainrowheaders"]) {
console.log(cls, "→ table kept:", run(para(5) + table(cls) + para(2)).includes("Annie Awards"));
}
Output:
wikitable → table kept: true
wikitable plainrowheaders → table kept: false
With debug: true the log shows Removing unlikely candidate - wikitable sortable plainrowheaders ….
Real page: https://en.wikipedia.org/wiki/The_Wild_Robot_(film). The "Accolades" table (118 rows) is missing from the output.
Expected
A data table (one with a caption or <th> cells) is kept. In a table, "header" usually refers to the table's own header cells, not to the page header.
Possible fix
Exempt <table> elements from the unlikely-candidate check in the same way their descendants already are, or at least tables that _markDataTables would treat as data tables. Layout tables would still go through _cleanConditionally.
Related: #775 (also Wikipedia tables, different symptom).
- Lenguaje dominante
- JavaScript
- Estrellas
- 11.5k
- Forks
- 740
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de mozilla/readability
-
JSDOMParser: Element is missing a lang accessorPosiblemente ocupada @josuesto la tomó hace 19 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 76/100
mozilla/readability#1026 ·
-
PHRASING_ELEMS missing <u>, <s>, and <bdi> elements causes paragraph splittingPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
mozilla/readability#997 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
mozilla/readability#1037 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
mozilla/readability#1031 ·
-
macworld.com rendering problemsAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
mozilla/readability#1029 ·
Todos los issues de mozilla/readability
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
micromatch/picomatch#243 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
b310-digital/teammapper#1515 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
c1overzz/dsh-bili-scroll#153 ·
Los mantenedores suelen responder en 1 día
-
01 type: bug 21 status: confirmed 41 lvl: easy 62 scope: viewer
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día