Ana içeriğe atla

Genel Bakış

Yeni JavaScript API v2, jeneratörlerin yerine async/await kullanımına geçerek çalışmayı basitleştirmeyi amaçlamaktadır. Ayrıca bu API'de önceki sürümün bazı kısıtlamaları giderilmiş, TypeScript desteği eklenmiş ve performans artırılmıştır. Tüm yeni veri kazıyıcılar oluşturulurken bu JavaScript API'sinin kullanılmasını öneriyoruz.

JavaScript API v2 kullanmak için veri kazıyıcı sınıfınızı temel BaseParser sınıfından miras almanız yeterlidir. Bir veri kazıyıcı sınıfının yapısını örnek üzerinden inceleyelim:

files/parsers/v2-example/v2-example.ts
import { BaseParser } from 'a-parser-types';

export class JS_v2_example extends BaseParser {
static defaultConf: typeof BaseParser.defaultConf = {
version: '0.0.1',
results: {
flat: [
['title', 'Title'],
['h1', 'H1 Header']
],
arrays: {
h2: ['H2 Headers List', [
['header', 'Header'],
]],
}
},
max_size: 2 * 1024 * 1024,
parsecodes: {
200: 1,
},
results_format: "Title: $title\nH1: $h1\nH2 headers:\n$h2.format('$header\\n')\n",
limitH2Tags: 3,
};

static editableConf: typeof BaseParser.editableConf = [
['limitH2Tags', ['textfield', 'Limit H2 tags']],
];

async parse(set, results) {
const { success, data, headers } = await this.request('GET', set.query);

if (success && typeof data == 'string') {
let matches;
if (matches = data.match(/<title[^>]*>(.*?)<\/title>/))
results.title = matches[1];

if (matches = data.match(/<h1[^>]*>(.*?)<\/h1>/))
results.h1 = matches[1];

if (results.h2) {
let count = 0;
const re = /<h2[^>]*>(.*?)<\/h2>/g;
while(matches = re.exec(data)) {
results.h2.push(matches[1]);
if (++count == this.conf.limitH2Tags)
break;
}
}
}

return results;
}
}

TODO: (next) ## Kalıtım