Een tabel van een website opslaan als CSV-bestand
Een csv-bestand is platte tekst die elk spreadsheetprogramma en elke database kan lezen. Een webtabel daarin krijgen is eenvoudig; zorgen dat het gebeurt zonder misvormde accenten, een verkeerd scheidingsteken of verloren nullen is het lastige deel. Vier manieren, en waar ze elk spaak lopen.
1. Kopiëren, plakken in Excel en dan Opslaan als
Selecteer de tabel, kopieer deze, plak hem in een leeg Excel-blad, gebruik dan de opdracht Opslaan als in het menu Bestand en kies het bestandstype CSV UTF-8.
Goed voor: een kleine tabel die je eenmalig nodig hebt, wanneer je Excel al geopend hebt.
Waar het spaak loopt: kies je het gewone type CSV in plaats van CSV UTF-8, dan verandert elk teken buiten je Windows-codetabel (accenten, Cyrillisch, Chinees) in een vraagteken. Excel schrijft bovendien het scheidingsteken dat is ingesteld in je landelijke Windows-instellingen, dus op veel Europese systemen wordt je "door komma's gescheiden" bestand in werkelijkheid gescheiden door puntkomma's, en het programma dat het leest verwacht mogelijk komma's. Plakken kan ook voorloopnullen weglaten (een code zoals 01234 wordt 1234) en waarden zoals 1-2 veranderen in datums, en de selectie kan tekst rondom de tabel meenemen.
2. Google Spreadsheets: plakken en dan Downloaden
Plak de tabel in een Google Spreadsheets-bestand, open dan het menu Bestand, ga naar Downloaden en kies de indeling door komma's gescheiden waarden (.csv).
Goed voor: elke computer met een browser, geen Excel nodig, en het bestand is altijd UTF-8.
Waar het spaak loopt: het bestand gebruikt altijd komma's, wat Excel in een regio met een decimale komma mogelijk niet opsplitst in kolommen wanneer je erop dubbelklikt. Alleen het blad dat je bekijkt wordt gedownload, niet het hele bestand. Net als Excel kan Spreadsheets sommige waarden tijdens het plakken omzetten in datums of getallen.
3. Python: pandas.read_html
Als je al in Python werkt, leest pandas elke tabel op een pagina en schrijft er een weg naar csv:
pandas.read_html("https://example.com/page")[0].to_csv("table.csv", index=False)
Het getal tussen haken is de positie van de tabel op de pagina (0 voor de eerste). Je moet pandas en lxml geïnstalleerd hebben.
Goed voor: dezelfde pagina elke week, of honderden pagina's, in een script.
Waar het spaak loopt: sommige websites weigeren het verzoek met een fout 403 omdat het er niet uitziet als een browser, dus moet je de pagina zelf downloaden en de HTML doorgeven aan pandas. Het kan geen pagina's achter een login zien of tabellen die JavaScript tekent nadat de pagina is geladen. Voetnootmarkeringen zoals [1] blijven in de koppen en waarden staan, en hele getallen kunnen eruitkomen als 8021407192.0 zodra een kolom een ontbrekende cel heeft.
4. Een browserextensie: één klik op de pagina die je leest
Een extensie werkt op de pagina precies zoals je die in je browser ziet, dus werkt deze ook nadat je bent ingelogd en op tabellen die met JavaScript zijn gebouwd. Wij maken er een, Ordelio Tabellen Kopiëren (gratis, geen rijenlimiet):
- Open de pagina en klik op het extensiepictogram (of druk op Alt+Shift+Y). Het toont alle tabellen op de pagina, de grootste eerst; zweef over er een en deze licht op.
- Druk op CSV: de browser slaat een bestand op met die tabel. Accenttekens blijven behouden omdat het bestand UTF-8 is met een markering die Excel dat vertelt, en het scheidingsteken is een puntkomma waar jouw taal decimalen met een komma schrijft (je kunt een komma, puntkomma of tab afdwingen in de opties).
Het verwijdert ook voetnootmarkeringen zoals [1], herhaalt samengevoegde cellen zodat kolommen uitgelijnd blijven, en schrijft codes zoals 01234 precies zo naar het bestand als ze op de pagina staan (een spreadsheetprogramma dat het bestand opent kan ze alsnog omzetten in getallen).
Waar het spaak loopt: het slaat op wat er nu op de pagina staat, dus een tabel die over meerdere pagina's is verdeeld heeft één bestand per pagina nodig, en het kan het bestand niet zelf bijwerken zoals een script dat kan.
Ordelio Tabellen Kopiëren downloaden voor Microsoft Edge Chrome- en Firefox-versies: in beoordeling.
Welke te gebruiken
| Excel Opslaan als | Google Spreadsheets | pandas | Extensie | |
|---|---|---|---|---|
| Pagina's achter een login | Ja (door te kopiëren) | Ja (door te kopiëren) | Nee | Ja |
| Accenttekens blijven behouden | Alleen met CSV UTF-8 | Ja | Ja | Ja |
| Scheidingsteken dat je kunt kiezen | Nee (ingesteld door Windows) | Nee (altijd komma's) | Ja (een parameter) | Ja (een optie) |
| Honderden pagina's in één keer | Nee | Nee | Ja | Nee |
| Tijd voor één nieuwe pagina | Ongeveer een minuut | Ongeveer een minuut | Minuten, de eerste keer | Een paar seconden |
Kort gezegd: gebruik pandas voor een script dat elke week op openbare pagina's draait. Sla het voor een eenmalige actie van een pagina die je leest, met name achter een login, rechtstreeks vanaf de pagina op.
Heb je een tabel gevonden die door geen van deze methoden wordt verwerkt? Laat het ons weten, we lezen elk bericht.