Implemented custom extractor epaper.zeit.de (#488)
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ßt Sozialismus für Sie, Kevin Kü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 · Jochen Bittner, Tina Hildebrandt </div>
|
||||
<div class="article__content" id="articleContent">
|
||||
<p class="title">Was heißt Sozialismus für Sie, Kevin Kühnert?</p> <subtitle>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</subtitle> <image-credits>Foto: Tibor Boz/Redux/laif</image-credits> <box type="citation">
|
||||
<p>»Der Zeitgeist ist nun wirklich kein altruistischer«</p>
|
||||
<author>xxx</author>
|
||||
</box> <division author="DIE ZEIT" type="interview"> <p>DIE ZEIT: Herr Kühnert, Sie nennen sich einen Sozialisten. Was verstehen Sie darunter?</p> </division> <division author="Kevin Kühnert" type="interview"> <p>Kevin Kühnert: Das ist erst mal ein Nichteinverstä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ü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ßt: Vergesellschaftung von Produktionsmitteln. Unterschreiben Sie das?</p> </division> <division author="Kühnert" type="interview"> <p>Kühnert: Wenn wir Sozialismus sagen, haben wir oft Bilder aus der Marxschen Zeit vor uns: große Fabriken, die nicht denen gehören, die darin arbeiten. In unsere heutige Zeit übersetzt, reden wir über den Umgang mit Internetgiganten, den Zugang zu großen Datenmengen und ob das wirklich in privatwirtschaftlicher Hand sein sollte. Der Grundsatz ist unverä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ürfnissen nachgehen können. Eine Demokratisierung aller Lebensbereiche.</p> </division> <byline>DIE FRAGEN STELLTEN JOCHEN BITTNER UND TINA HILDEBRANDT </byline> <linkbox> <text>Lesen Sie eine längere Version des Interviews bei ZEIT ONLINE unter </text> <link>www.zeit.de/kevin-kuehnert </linkbox> <p class="caption">Mieten oder kaufen? Für Kevin Kü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'
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue