Ett av de vanliga problem man stöter på om man skriver en egen webbcrawler/spider eller vill genomföra scraping (skrapning?) är att konvertera HTML-sidor till ren text. Detta kan tyckas som en tämligen enkel uppgift men trasig html och tolkning av html är några saker kan ställa till det en hel del.
Att exempelvis ladda in Aftonbladet.se i Python Beautifulsoup kan ta flera sekunder. Därför så sökte jag efter en lösning som inte bara är snabb men även passar sig för att baka in i en webbcrawler.
Det var då jag hittade Boilerpipe. Ett bibliotek att detektera och plocka bort runtomkring text på en webbsida och enbart returnera det som förhoppningsvis är huvudtexten på sidan.
Boilerpipe är skriven i Java men fungerar utmärkt i Python med jpype. Här finnes Python porten på github: github.com/misja/python-boilerpipe
För att sedan använda Boilerpipe i Python skriver du enbart:
from boilerpipe.extract import Extractor extractor = Extractor(extractor='ArticleExtractor', url=your_url)
Extractor kan vara någon av följande:
- DefaultExtractor
- ArticleExtractor
- ArticleSentencesExtractor
- KeepEverythingExtractor
- KeepEverythingWithMinKWordsExtractor
- LargestContentExtractor
- NumWordsRulesExtractor
- CanolaExtractor
Jag fick bäst resultat med KeepEverythingExtractor i de få tester jag genomförde.