Open GoogleCodeExporter opened 9 years ago
Idee: De complete HTML pagina's binnenhalen, en als die pagina niet gevonden
wordt of geen artikel bevat (checken voor bepaalde HTML tags) de backup scraper
direct laten crashen zodat het wordt opgemerkt.
Original comment by Toon.Alfrink@gmail.com
on 18 Jul 2013 at 9:46
Misschien beter: (zo goed als) elk artikel dat geyield wordt door de scrapers
heeft een 'doc' attribuut, da's de volledige HTML pagina. Die wordt niet
opgeslagen, het wordt alleen gebruikt in de scraper om informatie uit te
trekken.
Als we die opslaan, en de scraper faalt vervolgens om een bepaald attribuut op
te halen of de HTML goed te parsen, dan hebben we in ieder geval nog de data.
En we hoeven niet een hele rits backup scrapers te maken.
Dat lost het probleem van ontbrekende of foutieve attributen op, maar dan heb
je nog het probleem van de ontbrekende artikelen... Soms worden sommige
pagina's uberhaupt niet gevonden.
Als we een betrouwbare lijst van headlines hebben kunnen we checken of er iets
ontbreekt. Ik begrijp dat LexisNexis geen optie is omdat het alleen op vu/uva
computers draait? Misschien is google news een optie, maar waarschijnlijk is
dat ook niet volledig...
Maar misschien wel. Ik heb gisteren de google news scraper gemaakt, de
Oosterijkse versie draait nu uurlijks (moet nog dubbel checken of ie werkt), ik
kan kijken hoeveel headlines google news van een bepaald medium heeft, vs de
scraper van dat medium zelf.
Original comment by Toon.Alfrink@gmail.com
on 21 Jul 2013 at 9:45
Dat was eigenlijk ook het idee; Joep formuleerde het als een andere scraper die
"de kranten altijd volledig scrapet en opslaat, zonder verdere modificaties",
maar dit is uiteraard niets anders dan de volledige html van artikelen voor het
parsen in een back-up op te slaan.
Als het probleem ligt bij het yielden van artikelen, dan kunnen we inderdaad
niks met deze back-up files. Weet je zeker dat sommige pagina's uberhaubt niet
gevonden worden, of is dat een hypothese? In dat geval lijkt het mij ook
prioriteit om te kijken wat er mis gaat in het get_units process. Het lijkt mij
stug dat de Telegraaf soms voorpagina artikelen niet goed beschikbaar zou
stellen (zo niet dan heeft google news ook weinig zin). Wellicht zijn er soms
uitzonderingen in de html code, of kan het dat artikelen net geupdate worden
oid, maar idealiter ondervangen we dat direct in de scraper.
Lastig is dat we volgens mij geen log files meer hebben van de dagen waarvan we
weten dat het fout gaat, dus we zullen het vooral goed in de gaten moeten
houden de komende tijd.
Original comment by kasperwe...@gmail.com
on 21 Jul 2013 at 3:01
Wat de Telegraaf betreft weet ik precies wat er fout ging, de loop werd
afgebroken (in plaats van een ronde overslaan) wanneer er een te kort artikel
was. dwz 'break' ipv 'continue'. Daardoor werden niet alle artikelen meegenomen.
Dat sommige pagina's niet gevonden worden is een hypothese. Het komt voor dat
ik een scraper maak en dat ik zie waar ik potentieel een dergelijke fout had
kunnen maken. Bijvoorbeeld wanneer er x pagina's zijn, alleen de eerste x - 1
meenemen. Dat zijn fouten die je niet door hebt.
Een grove oplossing is crawlers gebruiken en elke URL die op de URL van een
artikel lijkt yielden. Het probleem is dan 1) het duurt lang 2) je weet niet
wanneer je alles hebt 3) je moet alle artikelen van de verkeerde datum eruit
filteren.
Morgen kijk ik even hoeveel artikelen van bijvoorbeeld orf.at door google news
zijn meegepikt. Als het 100% is hebben we een oplossing :)
Original comment by Toon.Alfrink@gmail.com
on 21 Jul 2013 at 7:45
Helaas, Google haalt lang niet alles binnen (dit is van Woensdag):
Kurier google: 51
Kurier Toon: 43
Krone google: 37
Krone Toon: 69
989901257
DiePresse google: 51
DiePresse Toon: 158
GMX google: 1 (?)
GMX Toon: 38
derstandard google: 64
derstandard Toon: 255
Maar we kunnen hier toch wel veel mee. Als er bij ons een artikel ontbreekt,
bijvoorbeeld een van de 255 bij derstandard, dan is er een redelijke kans dat
dat toch een van de 64 is van Google.
100% betrouwbaar scrapen kan alleen als we een 100% betrouwbare lijst van
titels hebben of urls, of iets anders dat een artikel (min of meer) uniek
maakt.
Een alternatief is crawlers inzetten maar dan hebben we een server met meer
power nodig en een sterke internetverbinding, of wellicht een slim algoritme
dat de juiste urls vind maar ik kan niets bedenken.
Hier is waar het op neer komt: Ik kan een dergelijk systeem opzetten dat de
headlines van Google haalt, na het scrapen vergelijkt en ontbrekende artikelen
aangeeft. Dit werkt helaas alleen met vrij toegankelijk nieuws. Het verhoogt de
nauwkeurigheid van de scraping, ik schat even ruw, van 90% naar 95% En als ik
netjes door werk kost het me een dag of 4.
Wees trouwens gerust: Die geschatte 10% die ontbreekt is voornamelijk van
'extra's'. dwz auto, prive, sport, beurs etc. Dat soort berichten hebben vaak
een andere opmaak of een externe website. De secties die van belang zijn, daar
focus ik op, die moeten werken.
Original comment by Toon.Alfrink@gmail.com
on 26 Jul 2013 at 9:23
Dus... doen of niet?
Original comment by Toon.Alfrink@gmail.com
on 30 Jul 2013 at 5:04
Ha Toon,
Volgens mij lopen er een paar dingen door elkaar nu, ik denk dat we voor
het probleem wat er is en mijn voorstel om het op te lossen niets met
google hoeft.
Het probleem is dat bij de bewerking of het inlezen van artikelen in amcat
er weleens artikelen verloren gaan. Sommige omdat ze inderdaad irrelevant
zijn (advertenties, puzzels, artikelen van 1 woord), maar sommige omdat ze
worden onterecht worden aangezien voor irrelevant, of door een fout in het
script zoals laatst. Wat ik voorstel is om de hele krant altijd te scrapen
en ergens op te slaan, zodat als we een fout tegenkomen we altijd nog terug
kunnen naar de 'ruwe' versie van de krant.
Ik snap niet helemaal waar die 10% foutmarge vandaan komt, en 10% is in de
wetenschap best veel. Wij scrapen dagelijks de digitale kranten vanaf de
krantensites. Voor zover ik weet is dat exact dezelfde krant als bij de
kiosk ligt. Begrijp ik goed dat van die online kranten er waarschijnlijk
10% mist? Als je dat vermoeden hebt moeten we dit uitzoeken. Dus met een
gescrapte krant, de digitale editie en de papieren krant kijken hoeveel er
ontbreekt en of het inderdaad om de extra's gaat. Als de digitale krant
-zoals ik vermoed- 100% is van de papieren krant, wil ik dat die voor 100%
gescraped wordt en opgeslagen wordt. Als er dan iets mis gaat, moet de
scraper crashen en een foutmelding sturen en zorg je ervoor dat de scraper
nog een keer scrapet en wel alles meeneemt. Dan moet de volledige krant
worden opgeslagen, en dan gaan de bewerkingen erover om het netjes in amcat
te krijgen. Kan dat? Wouter, Nel, Kasper, is dit mogelijk/wenselijk, of is
dit lekenpraat?
Groeten,
Joep
--
Joep Schaper | Researcher
E: joepschaper@nieuwsmonitor.net
T: +31 20 598 31 91
M: +31 6 533 55 865
W: www.nieuwsmonitor.net
F: www.facebook.com/NederlandseNieuwsmonitor
T: @nieuwsmonitor
Original comment by joepscha...@nieuwsmonitor.net
on 31 Jul 2013 at 8:31
Hoi Joep,
Je voorstel is in principe een goed idee, maar het lost niet het hele probleem
op.
Er kunnen met name 2 verschillende dingen fout gaan:
- De scraper kan een bepaald attribuut van een artikel niet vinden, geeft een
error en slaat het artikel over. Of de scraper slaat onterecht een artikel over
zoals in het geval van de telegraaf
- De scraper kan het artikel niet vinden (en weet ook niet van het bestaan van
het artikel dus levert geen error). Begrijp dat de 'krant' op de website niet
een enkel bestand is maar een bestand per artikel, en die moet ik zelf bij
elkaar zoeken...
Voor het eerste probleem is jouw voorstel een goede oplossing, en dat gaan we
wat mij betreft ook uitvoeren. Als we de ruwe versie hebben is de informatie
altijd ergens beschikbaar.
Maar het tweede probleem vraagt om een wat creatievere oplossing omdat de
scraper niet weet, of kan weten, dat er iets ontbreekt. Vaak heeft een website
een duidelijke index, maar soms zijn de artikelen overal verspreid in
verschillende tabs en categorieen en dossiers. Heb je dan bijvoorbeeld een
dossier die op een willekeurige plek op de site opduikt, dan weet de scraper
niet van zijn bestaan.
Daarom is een lijst van titels een oplossing: Die kan je met het scraping
resultaat vergelijken en dan weet je meteen of er iets ontbreekt. Zelfs als die
lijst niet compleet is kunnen er titels in staan die in amcat ontbreken. Google
heeft een dergelijke lijst.
Die 10% is misschien wat overdreven, maar ik durf niets met zekerheid over dat
getal te zeggen. Goed idee om in de toekomst hier en daar even te vergelijken.
Groet,
Toon
Original comment by Toon.Alfrink@gmail.com
on 31 Jul 2013 at 2:04
ruwe versie opslaan lijkt mij goed, misschien gewoon als een apart artikel in
de database in een apart project, met medium en datum goed ingevuld en verder
de ruwe html als tekst, want als het ergens op een disk staat is het ook lastig
bij elkaar zoeken?
Original comment by vanatteveldt@gmail.com
on 31 Jul 2013 at 8:20
Original comment by Toon.Alfrink@gmail.com
on 16 Nov 2013 at 3:08
Ik wilde hiermee aan de slag gaan, maar ik zet 'm toch weer even op pauze:
We willen in de toekomst de scrapers een voor een opnieuw opbouwen en in dat
proces het een en ander fixen / verbeteren. Dit issue kan dan mooi meegenomen
worden.
Original comment by Toon.Alfrink@gmail.com
on 16 Nov 2013 at 3:14
Wanneer is dat? Als dat namelijk nog een tijdje duurt en dit niet al te
moeilijk is, kunnen we het misschien toch beter doorzetten.
Original comment by joepscha...@nieuwsmonitor.net
on 18 Nov 2013 at 11:15
ik moet elke scraper aanpassen, dus het kost nogal wat tijd om te
implementeren. vandaar.
Ik had daar nog geen concrete plannen voor, we zijn nu even met een andere
herstructurering bezig, maar dat is waarschijnlijk binnen 2 weken wel klaar.
Daarna kan ik hiermee aan de slag.
Original comment by Toon.Alfrink@gmail.com
on 1 Dec 2013 at 4:10
Original issue reported on code.google.com by
joepscha...@nieuwsmonitor.net
on 18 Jul 2013 at 9:38