edisona / amcat

Automatically exported from code.google.com/p/amcat
1 stars 0 forks source link

Back-up kranten scraping #538

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Hoi Toon,

Ik had het eergisteren met Kasper nog over de ontbrekende Telegraaf-artikelen 
en hij had nog een idee om naast de scraper die alles netjes in amcat zet een 
scraper te hebben die de kranten altijd volledig scrapet en opslaat, zonder 
verdere modificaties, zodat als er iets mis is in amcat de kranten altijd nog 
uit een back-up archief te halen zijn. Die scraper zou dan niet artikelen 
overslaan met minder dan 300 tekens etc, maar haalt gewoon altijd alles binnen. 
Is zoiets mogelijk? En Nel/Wouter, is zoiets wenselijk?

Groeten,

Joep

Original issue reported on code.google.com by joepscha...@nieuwsmonitor.net on 18 Jul 2013 at 9:38

GoogleCodeExporter commented 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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
Dus... doen of niet?

Original comment by Toon.Alfrink@gmail.com on 30 Jul 2013 at 5:04

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago

Original comment by Toon.Alfrink@gmail.com on 16 Nov 2013 at 3:08

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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

GoogleCodeExporter commented 9 years ago
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