Как я могу получить большие данные с помощью wiki API? - PullRequest
0 голосов
/ 07 мая 2020

Для каждого человека в списке мне нужно получить имя человека, дату рождения, дату смерти и URL-адрес изображения.

Я планирую использовать этот Category:Born_on_day_month каждый день в году через Википедию (каждый день около 1000 человек).

Когда я пытался получить с помощью php-script список здесь , он работал, как задумано.

Однако, когда я пытался получить Wiki id для каждого человека через this , а затем this , он выдал ошибку после 5-10 запросов (один запрос занимает около 0,5 секунды).

Я знаю, что это не лучший способ сделать это, и надеюсь найти способ получше. Как лучше всего это сделать? (может быть, одна большая просьба для какой-то дополнительной цели)?

1 Ответ

0 голосов
/ 08 мая 2020

Первые два запроса могут быть объединены в https://ru.wikipedia.org/w/api.php?action=query&format=xml&generator=categorymembers&gcmlimit=max&gcmtitle=Category: родившиеся_1_января & prop = pageprops .

Запросы Викиданных можно уменьшить, используя "action = wbgetentities". Затем вы можете добавить до 50 идентификаторов элементов, разделенных вертикальной чертой, например https://www.wikidata.org/w/api.php?format=xml&action=wbgetentities&ids=Q4054186 | Q2669358 | Q4054194

Однако, поскольку вы в основном хотите извлечь данные всех людей с помощью статьи в Википедии, вам все равно придется делать тысячи запросов. Вместо того, чтобы копировать все данные, подумайте, какие данные вам действительно нужны для вашего приложения, и затем запрашивайте только те.

...