Od razu na wstępie powiem, że nie jestem informatykiem, lecz humanistą (dokładniej mówiąc historykiem).
Potrzebuję pobrać dane z jednej ruskiej bazy danych https://www.obd-memorial.ru. Problem w tym, że danych tych jest 20 milionów rekordów (z czego id rekordów mają nawet po 10-11 cyfr, gdyż nie wszystkie są po kolei), a maksymalnie po 1 zapytaniu można zwrócić niecałe 10 tysięcy rekordów.
Mam taki skrypt wywoływany przez konsolę:
var request = require("request");
var options = { method: 'POST',
url: 'http://obd-memorial.ru/Image2/newsearchservlet',
headers:
{ 'content-type': 'application/x-www-form-urlencoded',
'cache-control': 'no-cache' },
form:
{ foo: '0.6340119550004601',
appName: 'Mem',
group: '',
xmlParam: '<request maxNumRecords="9700" firstRecordPosition="0" adjustPage="true"><record entity="Человек Донесение" fullTextField="{query}"/><record entity="Человек Госпиталь" fullTextField="{query}"/><record entity="Человек Дополнительное Донесение" fullTextField="{query}"/><record entity="Человек Захоронение" fullTextField="{query}"/><record entity="Человек Эксгумация" fullTextField="{query}"/><record entity="Человек Плен" fullTextField="{query}"/><record entity="Человек Приказ" fullTextField="{query}"/><record entity="Человек Картотека" fullTextField="{query}"/></request>'
}
};
options.form.xmlParam = options.form.xmlParam.replace(/\{query\}/g, '10000*');
console.log(options.form.xmlParam);
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
Wysłane zapytanie zwraca mi 9700 wyników w mniej więcej takiej formie:
<record id="2010409" entity="Человек Донесение" f2="Кошлаков" f3="Василий" f4="Моисеевич" f5="__.__.1922" f6="Курская обл., Черемисиновский р-н, дер. Покровка" f7="Суджанский РВК, Курская обл., Суджанский р-н" f8_old="67 морская стрелк. бр." f9_old="красноармеец" f11="убит" f12="16.06.1942" f14="Карело-Финская ССР, квадрат 72-12. А, карта 1:100000, издание 1936 г. лист 0-36-78 Пингосальма, Кестеньгское направлениекарта 1:100000, издание 1936 г. лист 0-36-78 Пингосальма, Кестеньгское направление" f18="ЦАМО" f19="58" f20="818883" f21="1383" f9="красноармеец" f8="67 морсбр" recordNumber="1" />
Moje pytanie teraz jest takie: w jaki sposób mogę zapętlić to zapytanie, żeby za każdym razem zmieniał się parametr zapytania czyli: 10000*. Myślę, że to co muszę zrobić to po prostu wysłać 100 tysięcy razy zapytanie zmieniając za każdym razem automatycznie parametr o jeden, czyli 10000*, 10001*, 10002* itd. No i najlepiej by było aby zapytanie było wysyłane co jakąś tam część sekundy, tak by mnie za szybko ruscy nie zbanowali.
W bazie tej znajduje się według szacunków ponad 100 tysięcy Polaków, którzy zginęli na wojnie lub siłą byli wciągnięci do Armii Czerwonej, a niestety poprzez samą przeglądarkę nie idzie ich wszystkich znaleźć.
No i proszę o opinię czy to w ogóle ma sens robienie tego w taki sposób.
Za wszelkie pomysły oraz pomoc będę bardzo wdzięczny, tylko proszę pisać do mnie prostym językiem, gdyż pojęcia o programowaniu za dużego to ja nie mam.