2013-04-28 2 views
2

Я пытаюсь получить ссылки с определенной страницы, чтобы они были представлены на странице или были достаточно близки. Я считаю, что нашел правильный вызов API, чтобы сделать это, используя запрос синтаксического анализа, однако я замечаю, что получаю много из того, что я считаю «мусорными» ссылками, которые действительно являются ссылками, сделанными в ссылках. Например, для Альберта Эйнштейна я делаю запрос (http://en.wikipedia.org/w/api.php?action=parse&format=json&page=Albert%20Einstein&redirects=&prop=links), и я получу ссылки, которые встречаются в ссылках, таких как E. T. Whittaker и JSTOR. Для моих целей эти ссылки в ссылках являются «мусорными».API Wikipedia: исключая ссылки из запроса на парсер

В качестве альтернативы я просмотрел команду запроса, но обнаружил, что команда запроса с помощью prop = link в конечном итоге приведет к тому, что ссылки будут в алфавитном порядке, которые потеряют часть информации, которую я хотел посмотреть. Кроме того, этот запрос API также включает эти «нежелательные» ссылки из ссылок.

Есть ли в любом случае для меня команда parse игнорировать ссылки, которые находятся в ссылочных тегах, или мне нужно вместо этого получить текст с помощью API, а затем выполнить парсинг на стороне клиента?

+1

Я также забыл упомянуть, что я рассматривал использование разделов, но, насколько я знаю, у меня нет программного способа определить, какие разделы являются ссылочными разделами, используя API. – Nobosi

+0

Невозможно скрыть ссылки после получения HTML, например. с стилем CSS? – Nemo

ответ

2

Я не думаю, что есть прямой способ сделать это. Одним из способов решения проблемы было бы получить текст страницы, удалить код, который на самом деле показывает ссылки ({{reflist}} или <references />), а затем использовать API для его анализа. Это добавит ссылку «мусор» на Help:Cite errors/Cite error refs without references, но легко проигнорировать эту страницу.

+0

Это то, о чем я думал и закончил, но подумал, что дважды проверю, чтобы я не пропустил что-то в API. Спасибо за вашу помощь! – Nobosi

3

Я также не думаю, что есть способ получить именно то, что вы ищете. Если вы попросите MediaWiki проанализировать страницу, она решит все ссылки на шаблоны, прежде чем возвращать их. Если мне нужно делать то, что ищете, я бы вместо того, чтобы просто получить сырой вики-текста страницы:

http://en.wikipedia.org/w/api.php?action=parse&format=json&page=Albert%20Einstein&redirects=&prop=wikitext

, а затем с помощью этого я хотел бы сделать свой собственный синтаксический. Достаточно просто использовать регулярное выражение, чтобы найти все wiki-ссылки. Также было бы легко удалить все шаблоны со страницы.

+0

То есть подход, который я в конечном итоге взял. Спасибо за вашу помощь! – Nobosi

+0

Отлично! Рад, что это помогло. –

Смежные вопросы