Dla kogo ·
Tabele, które przetrwają drogę do Markdowna
Ogólne konwertery HTML do Markdowna psują się na tabelach, które się liczą: tych z listą, odnośnikiem albo przykładem kodu w komórce. Clean Web Clipper sam serializuje tabelę i spłaszcza zawartość komórki, zamiast gubić wiersz.
Skąd te liczby: pomiar z wersjami silników i datami
Gdzie giną liczby
Tabela jest powodem, dla którego zapisałeś stronę: progi cenowe, limity zapytań, okresy retencji, schemat. Wklejasz wycinek do notatek i widzisz jeden wiersz rozlany na całą stronę, kreski pionowe w złych miejscach i kolumnę, która po cichu zlała się z sąsiednią. Liczby nadal są na ekranie w przeglądarce za tobą, więc błąd łatwo przeoczyć – dopóki karta nie zniknie.
Odwrotna awaria kosztuje to samo popołudnie. Mnóstwo witryn wciąż używa table wyłącznie do układania elementów, a konwerter, który każdą taką tabelę traktuje jak dane, podaje ci dwadzieścia wierszy nawigacji przebranych za zbiór danych. W jednym przypadku czas idzie na przepisywanie liczb, w drugim na usuwanie siatki, a w żadnym na analizę, dla której usiadłeś.
Przepisywanie ma trzeci koszt, który wychodzi dużo później. Liczba wpisana ręcznie do arkusza nie niesie źródła, daty ani możliwości sprawdzenia – po sześciu tygodniach nikt nie powie, czy okres retencji w komórce D14 odczytano ze strony w styczniu czy w marcu, a strona była od tego czasu dwa razy redagowana. Ceny, limity i kwoty zmieniają się bez ogłoszeń. Przechwycona tabela z adresem źródła i zadeklarowaną datą strony nad nią odpowiada na to pytanie – i odpowiada ponownie w następnym kwartale, gdy zapiszesz tę samą stronę i porównasz oba pliki.
Co przechodzi w całości
- Serializator tabel GFM napisany do tego zadania, a nie przykręcona wtyczka ogólnego konwertera.
- 12 tabel z 15 zachowanych na korpusie technicznym, wobec 7 w każdym porównywanym silniku.
- Nierówne tabele dwukolumnowe stają się liniami z pogrubionym kluczem i wartością zamiast rozsypanej siatki.
- Tabele układu są rozpakowywane – siatki służące tylko do rozmieszczenia elementów oddają zawartość bez siatki.
- Kod w komórce zostaje kodem, z etykietą języka przy ogrodzeniu.
- Zaznacz tabelę na stronie i zapisz zaznaczenie, gdy artykuł wokół nie jest potrzebny.
- Adres źródła i zadeklarowana data strony stoją nad tabelą, więc zestaw liczb niesie datę, w której obowiązywał, a nie datę, kiedy akurat trafił do folderu.
- Drugi zapis tej samej strony dostaje sufiks liczbowy, nigdy nie nadpisuje – i dopiero to umożliwia kwartalne porównanie.
| Symbol | Nazwa grupowania | Uwagi | | --- | --- | --- | | 62.01.Z | Działalność związana z oprogramowaniem | bez podklas | | 62.02.Z | Doradztwo w zakresie informatyki | także audyt i planowanie | | 62.03.Z | Zarządzanie urządzeniami informatycznymi | `outsourcing` infrastruktury | Wiersz z listą albo fragmentem kodu w komórce zostaje wierszem, a nie zwija się do jednej linii.
Ustawienia pod tabele krok po kroku
Dwa ustawienia i jeden nawyk. Nawyk – przewinięcie przed zapisem – odzyskuje więcej wierszy niż jakiekolwiek ustawienie.
- Z ikony rozszerzenia otwórz Opcje i wskaż folder, w którym leżą dane robocze –
dane/zrodlaobok notatnika albo arkusza, który z nich korzysta. - Kliknięcie ikony zostaw na oknie podglądu. Tabela to jedyna rzecz, na którą warto spojrzeć, zanim trafi do folderu – czy kolumny się zgadzają, widać jednym rzutem oka, a w wykazie plików nie widać wcale.
- Ustaw wzorzec nazwy na
{date}-{domain}-{title}, żeby ta sama strona z cennikiem zapisana w styczniu i w kwietniu była dwoma plikami sortującymi się obok siebie. - Włącz we frontmatterze
sourceidate. Tabela bez adresu, spod którego pochodzi, to zestaw liczb, który ktoś kiedyś będzie musiał wyprowadzić od nowa. - Przed zapisem przewiń do końca tabeli. Wiersze doładowywane przy przewijaniu nie istnieją w DOM, dopóki się nie wczytają, a rozszerzenie czyta DOM w chwili zapisu.
- Gdy artykuł wokół jest bez znaczenia, zaznacz tabelę na stronie i zapisz zaznaczenie. Przełącznik u góry okna potwierdza, że patrzysz na zaznaczenie, a nie na całą stronę.
- Wpisz do kalendarza cykliczny zapis stron, na których liczby się ruszają: kwot, cen, okresów retencji. Wartość zbioru leży w drugim zapisie, nie w pierwszym.
Ustawienia pod liczby do ponownego użycia
Sens każdej wartości poniżej jest taki, że tabela czytana za pół roku ma nadal mówić, skąd pochodzi i z kiedy jest.
| Ustawienie | Wartość | Dlaczego właśnie tak |
|---|---|---|
| Kliknięcie ikony | okno podglądu | Przesuniętą kolumnę widać od razu na ekranie, a w wykazie plików wcale |
| Folder docelowy | katalog dane/zrodla | Zapisy leżą obok notatnika albo arkusza, który z nich korzysta |
| Wzorzec nazwy | {date}-{domain}-{title} | Kwartalne zapisy jednej strony sortują się razem i nigdy nie kolidują |
| Frontmatter | source i date włączone | Dwie linie, które zamieniają zestaw liczb z powrotem w fakt do zacytowania |
| Obrazy | pomijaj | Wykresy i tak przychodzą jako odnośniki do obrazów; rozszerzenie nie odczytuje liczb z obrazka |
| Zaznaczenie | zaznacz tabelę, zapisz zaznaczenie | Dwanaście ekranów artykułu wokół czterowierszowej tabeli to w folderze z danymi szum |
| Powtórny zapis | ta sama strona co kwartał | Sufiks liczbowy zachowuje oba pliki, a porównanie jest analizą |
**Ludność w wieku produkcyjnym** : Mężczyźni 18–64 lata, kobiety 18–59 lat. Definicja stosowana w publikacjach do 2023 r. włącznie. **Współczynnik obciążenia demograficznego** : Liczba osób w wieku nieprodukcyjnym na 100 osób w wieku produkcyjnym. **Przyrost naturalny** : Różnica między liczbą urodzeń żywych a liczbą zgonów. Źródłowa siatka miała scalone komórki nagłówka i listę zagnieżdżoną w ostatnim wierszu. Jako tabela Markdown rozpadłaby się; jako pary klucz–wartość nie ma czego rozbić.
Trzy tabele, trzy wyniki
Tabela cenowa do arkusza porównawczego
Czterech dostawców, cztery strony z cennikami, cztery zapisy. Każda tabela przychodzi jako tabela GFM, z nazwami planów, kwotami i limitami w tych komórkach, w których stały, i z adresem źródła nad nią, więc arkusz porównawczy powstaje bez przepisania ani jednej liczby.
Tu serializator zarabia na swoje miejsce – komórki, które psują ogólne konwertery, to te ze znacznikiem przypisu, listą funkcji w cenie albo przykładem kodu w środku. Na technicznym korpusie piętnastu tabel przetrwało tu dwanaście, wobec siedmiu w każdym porównywanym silniku.
Ta sama strona w odstępie kwartału
Limity zapytań dostawcy zapisałeś w lutym i ponownie w maju. Drugi plik dostał sufiks liczbowy. Porównanie pokazuje, że limit chwilowy w planie startowym spadł o połowę, a okres retencji w najwyższym planie się wydłużył – i żadna z tych zmian nie została nigdzie ogłoszona.
Bez lutowego pliku zmiany nie da się udowodnić, bo strona pokazuje tylko swój obecny stan, a poprzednie liczby nie istnieją nigdzie, gdzie dostawca coś publikuje. Cała metoda zależy od tego, czy pierwszy zapis był na tyle tani, żeby go zrobić, zanim było wiadomo, że będzie ważny.
Siatka, która nie mogła być tabelą
Strona specyfikacji definiuje dwadzieścia nagłówków w dwukolumnowej siatce ze scalonymi komórkami nagłówka i listą zagnieżdżoną w jednym wierszu. Odtworzona jako tabela Markdown rozsypałaby się; zamiast tego przychodzi jako pogrubione linie kluczy z wartościami pod spodem, co jest bezstratne i przy czytaniu, i przy wyszukiwaniu.
To zachowanie jest celowe, a nie awarią awaryjnej ścieżki. Nierówne tabele dwukolumnowe dużo częściej są listami definicji przebranymi za siatkę niż danymi, a rozsypaną tabelę z kreskami trudniej naprawić niż przeczytać listę.
Wobec zwykłych sposobów przenoszenia tabeli
Każdy z tych sposobów zdejmuje liczby ze strony. Różnią się tym, co przychodzi razem z liczbami, i tym, co trzeba zrobić potem.
| Jak się to robi dziś | Co z tego wychodzi | Ile kosztuje |
|---|---|---|
| Przepisanie do arkusza | Dokładnie te komórki, których potrzebujesz | Błędy przepisywania i brak zapisu źródła oraz daty |
| Kopiowanie i wklejenie do arkusza | Często siatka, czasem | Zawodzi na komórkach z listami albo kodem; siatki układu przychodzą jako dane |
| Zrzut ekranu tabeli | Tabela tak, jak była wyświetlona | Nic do obliczeń, nic do przeszukania, brak linii ze źródłem |
| Eksport CSV udostępniony przez witrynę | Czyste dane, jeśli eksport istnieje | Większość stron go nie ma, a eksport czasem różni się od tego, co jest wyświetlane |
| Ogólny konwerter HTML do Markdowna | Markdown, szybko | Komórka z listą albo blokiem kodu to miejsce, w którym ogólne konwertery się psują |
| Clean Web Clipper | Tabela GFM ze źródłem i datą nad nią | Bez scalonych komórek, bez eksportu CSV i bez odczytywania liczb z obrazu wykresu |
Kiedy tabela nie wychodzi dobrze
Dlaczego zniknęły scalone komórki?
Markdown nie ma scalonych komórek, więc colspan i rowspan są spłaszczane – zawartość zostaje zachowana, a wizualne scalenie nie, bo format nie potrafi go wyrazić. Gdy scalony nagłówek obejmował trzy kolumny, tekst ląduje w pierwszej z nich. To właściwość formatu docelowego, a nie konwersji: żadna tabela Markdown nigdzie tego nie wyraża.
Dlaczego brakuje połowy wierszy?
Rozszerzenie czyta DOM w chwili zapisu, więc wiersze, które strona doładowuje przy przewijaniu (albo podaje przez przycisk „pokaż więcej”, albo dzieli na strony), jeszcze nie istnieją, jeśli ich nie wywołałeś. Przewiń do końca, rozwiń to, co się rozwija, i dopiero zapisz. Tabelę podzieloną na strony zapisz stroną po stronie – części da się potem połączyć, a nic innego nie odzyska wierszy, których przeglądarka nigdy nie dostała.
Dlaczego zamiast danych dostałem siatkę nawigacji?
To tabela układu: siatka służąca wyłącznie do rozmieszczenia elementów, której wiele starszych witryn wciąż używa do menu i nagłówków. Takie tabele są rozpakowywane, a nie konwertowane, więc zawartość przechodzi bez siatki. Jeśli siatka nawigacji jednak trafiła do notatki jako tabela, to dlatego, że strona oznaczyła ją jako tabelę danych – znaczniki mówiły „dane”, a rozszerzenie im uwierzyło.
Dlaczego tabela wyszła jako linie klucz–wartość?
To ścieżka dla nierównych tabel dwukolumnowych. Dwukolumnowa tabela z nierównymi wierszami to zwykle lista definicji narysowana jako siatka, a odtworzenie jej jako tabeli z kreskami daje rozsypaną siatkę zamiast czytelnej. Zawartość jest kompletna: pogrubiony klucz, wartość pod nim, w pierwotnej kolejności. Jeśli potrzebujesz prawdziwej tabeli, pary da się mechanicznie zamienić z powrotem.
Gdzie kończą się możliwości formatu
Markdown nie ma scalonych komórek, więc colspan i rowspan są spłaszczane – zawartość zostaje, wizualne scalenie nie, bo format nie umie go wyrazić. Tabela zagnieżdżona w komórce jest trudna dla każdego narzędzia i to nie jest wyjątkiem. Nie odczytuje liczb z obrazu wykresu i nie eksportuje do CSV ani XLSX: wynikiem jest Markdown. I konwertuje jedną stronę naraz – tę, na której stoisz.
Pytania
Co dzieje się z tabelą użytą wyłącznie do układu?
Czy scalone komórki są obsługiwane?
Czy mogę zapisać samą tabelę?
Czy dostanę z tego CSV?
Co z tabelami, które doładowują wiersze przy przewijaniu?
Czy odczytuje liczby z wykresu?
Czy plik zapisuje, kiedy liczby obowiązywały?
{date}. Gdy strona nie deklaruje daty, pole zostaje puste, a nie wypełnione – to przynajmniej uczciwa luka, a nie błędna liczba.