Implemented custom extractor epaper.zeit.de (#488)

pull/493/head
Sven Wiegand 5 years ago committed by Michael Ashley
parent 2422e4717d
commit f95947fe88

@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" value="IE=edge">
<meta name="viewport" value="width=device-width, initial-scale=1">
<meta name="robots" value="noindex, nofollow, noarchive">
<title>Was hei&#xDF;t Sozialismus f&#xFC;r Sie, Kevin K&#xFC;hnert?</title>
<link rel="stylesheet" href="https://epaper.zeit.de/css/article/bootstrap.min.css"> <link rel="stylesheet" href="https://epaper.zeit.de/css/article/article.css"></head>
<body class="hyphenate">
<div class="container">
<div class="row">
<div class="col-xs-12">
<div class="article">
<div class="article__author">
Politik &#xB7; Jochen Bittner, Tina Hildebrandt </div>
<div class="article__content" id="articleContent">
<p class="title">Was hei&#xDF;t Sozialismus f&#xFC;r Sie, Kevin K&#xFC;hnert?</p> <subtitle>Zum Beispiel die Kollektivierung von Firmen wie BMW, sagt der Chef der Jusos. In der Wirtschaftsordnung, die er sich vorstellt, g&#xE4;be es auch kein Eigentum an Wohnraum mehr. Ein Gespr&#xE4;ch &#xFC;ber eine radikale Alternative</subtitle> <image-credits>Foto: Tibor Boz/Redux/laif</image-credits> <box type="citation">
<p>&#xBB;Der Zeitgeist ist nun wirklich kein altruistischer&#xAB;</p>
<author>xxx</author>
</box> <division author="DIE ZEIT" type="interview"> <p>DIE ZEIT: Herr K&#xFC;hnert, Sie nennen sich einen Sozialisten. Was verstehen Sie darunter?</p> </division> <division author="Kevin K&#xFC;hnert" type="interview"> <p>Kevin K&#xFC;hnert: Das ist erst mal ein Nichteinverst&#xE4;ndnis mit der Wirtschafts- und teilweise auch mit der Gesellschaftsordnung. Es markiert den Anspruch, dass eine bessere Welt nicht nur denkbar, sondern auch realisierbar ist. Sprich: eine Welt freier Menschen, die kollektive Bed&#xFC;rfnisse in den Vordergrund stellt und nicht Profitstreben.</p> </division> <division author="ZEIT" type="interview"> <p>ZEIT: Das klingt etwas blumig. Die klassische Definition hei&#xDF;t: Vergesellschaftung von Produktionsmitteln. Unterschreiben Sie das?</p> </division> <division author="K&#xFC;hnert" type="interview"> <p>K&#xFC;hnert: Wenn wir Sozialismus sagen, haben wir oft Bilder aus der Marxschen Zeit vor uns: gro&#xDF;e Fabriken, die nicht denen geh&#xF6;ren, die darin arbeiten. In unsere heutige Zeit &#xFC;bersetzt, reden wir &#xFC;ber den Umgang mit Internetgiganten, den Zugang zu gro&#xDF;en Datenmengen und ob das wirklich in privatwirtschaftlicher Hand sein sollte. Der Grundsatz ist unver&#xE4;ndert: Was unser Leben bestimmt, soll in der Hand der Gesellschaft sein und demokratisch von ihr bestimmt werden. Eine Welt, in der Menschen ihren Bed&#xFC;rfnissen nachgehen k&#xF6;nnen. Eine Demokratisierung aller Lebensbereiche.</p> </division> <byline>DIE FRAGEN STELLTEN JOCHEN BITTNER UND TINA HILDEBRANDT </byline> <linkbox> <text>Lesen Sie eine l&#xE4;ngere Version des Interviews bei ZEIT ONLINE unter </text> <link>www.zeit.de/kevin-kuehnert </linkbox> <p class="caption">Mieten oder kaufen? F&#xFC;r Kevin K&#xFC;hnert eine Frage des Gemeinwohls</p> </div>
</div>
</div>
</div>
</div>
</body>
</html>

@ -0,0 +1,37 @@
export const EpaperZeitDeExtractor = {
domain: 'epaper.zeit.de',
title: {
selectors: ['p.title'],
},
author: {
selectors: ['.article__author'],
},
date_published: null,
excerpt: {
selectors: ['subtitle'],
},
lead_image_url: null,
content: {
selectors: ['.article'],
// Is there anything in the content you selected that needs transformed
// before it's consumable content? E.g., unusual lazy loaded images
transforms: {
'p.title': 'h1',
'.article__author': 'p',
byline: 'p',
linkbox: 'p',
},
// Is there anything that is in the result that shouldn't be?
// The clean selectors will remove anything that matches from
// the result
clean: ['image-credits', 'box[type=citation]'],
},
};

@ -0,0 +1,109 @@
import assert from 'assert';
import URL from 'url';
import cheerio from 'cheerio';
import Mercury from 'mercury';
import getExtractor from 'extractors/get-extractor';
import { excerptContent } from 'utils/text';
const fs = require('fs');
describe('EpaperZeitDeExtractor', () => {
describe('initial test case', () => {
let result;
let url;
beforeAll(() => {
url =
'https://epaper.zeit.de/article/702225a4061dfbf97ab93df8de77e8c54aa3f5fe7a8c2799e8d425953d123acf';
const html = fs.readFileSync(
'./fixtures/epaper.zeit.de/1566927390034.html'
);
result = Mercury.parse(url, { html, fallback: false });
});
it('is selected properly', () => {
// This test should be passing by default.
// It sanity checks that the correct parser
// is being selected for URLs from this domain
const extractor = getExtractor(url);
assert.equal(extractor.domain, URL.parse(url).hostname);
});
it('returns the title', async () => {
// To pass this test, fill out the title selector
// in ./src/extractors/custom/epaper.zeit.de/index.js.
const { title } = await result;
// Update these values with the expected values from
// the article.
assert.equal(title, `Was heißt Sozialismus für Sie, Kevin Kühnert?`);
});
it('returns the author', async () => {
// To pass this test, fill out the author selector
// in ./src/extractors/custom/epaper.zeit.de/index.js.
const { author } = await result;
// Update these values with the expected values from
// the article.
assert.equal(author, 'Politik · Jochen Bittner, Tina Hildebrandt');
});
it('returns the date_published', async () => {
// To pass this test, fill out the date_published selector
// in ./src/extractors/custom/epaper.zeit.de/index.js.
const { date_published } = await result;
// Update these values with the expected values from
// the article.
assert.equal(date_published, null);
});
it('returns the excerpt', async () => {
// To pass this test, fill out the excerpt selector
// in ./src/extractors/custom/epaper.zeit.de/index.js.
const { excerpt } = await result;
// Update these values with the expected values from
// the article.
assert.equal(
excerpt,
'Zum Beispiel die Kollektivierung von Firmen wie BMW, sagt der Chef der Jusos. In der Wirtschaftsordnung, die er sich vorstellt, gäbe es auch kein Eigentum an Wohnraum mehr. Ein Gespräch über eine radikale Alternative'
);
});
it('returns the lead_image_url', async () => {
// To pass this test, fill out the lead_image_url selector
// in ./src/extractors/custom/epaper.zeit.de/index.js.
const { lead_image_url } = await result;
// Update these values with the expected values from
// the article.
assert.equal(lead_image_url, null);
});
it('returns the content', async () => {
// To pass this test, fill out the content selector
// in ./src/extractors/custom/epaper.zeit.de/index.js.
// You may also want to make use of the clean and transform
// options.
const { content } = await result;
const $ = cheerio.load(content || '');
const first13 = excerptContent(
$('*')
.first()
.text(),
13
);
// Update these values with the expected values from
// the article.
assert.equal(
first13,
'Politik · Jochen Bittner, Tina Hildebrandt Zum Beispiel die Kollektivierung von Firmen wie'
);
});
});
});

@ -131,3 +131,4 @@ export * from './www.lemonde.fr';
export * from './www.phoronix.com';
export * from './pitchfork.com';
export * from './biorxiv.org';
export * from './epaper.zeit.de';

Loading…
Cancel
Save