Как получить обратные ссылки на определенных страницах в википедии в python? - PullRequest
0 голосов
/ 24 марта 2020

Я использую следующий код для получения обратных ссылок на страницу в википедии.

import pywikibot as pw
backlinks_list = []

for item_backlink in pw.Page(pw.Site('en', 'wikipedia'), wikipedia_name).backlinks():
    backlinks_list.append(item_backlink.title())

Однако, когда я устанавливаю wikipedia_name = "Cyproheptadine" в коде, я получаю следующую ошибку.

pywikibot.exceptions.CircularRedirect: Page [[en:Dibenzocycloheptene]] is a circular redirect.
CRITICAL: Exiting due to uncaught exception <class 'pywikibot.exceptions.CircularRedirect'>

Мне интересно, почему это происходит и как получить обратные ссылки на таких страницах?

Я с удовольствием предоставлю более подробную информацию, если это необходимо.

1 Ответ

1 голос
/ 24 марта 2020

По умолчанию .backlinks() включает обратные ссылки перенаправленных страниц. Хотя иногда это желаемая функция, она вызывает ошибку в вашем случае. «Дибензоциклогептен» является обратной связью «Ципрогептадина», но «Дибензоциклогептен» также является редиректом на «Дибензозуберан», который снова является редиректом на «Дибензоциклогептен». Это круг, поэтому pywikibot выдает ошибку.

Вы можете решить эту проблему, установив .backlinks(follow_redirects=False). Тогда обратные ссылки перенаправлений не будут включены в ваш список.

Поскольку круговые перенаправления довольно редки, вы также можете решить эту проблему у источника: go в Википедию и вырезать круг, удалив ссылку перенаправления на "Dibenzocycloheptene".

...