Как стать автором
Обновить

Комментарии 26

В заголовке у Вас ошибочка
Спасибо, исправил
А почему бы вместо сокетов просто curl не использовать?
Почему бы вместо curl не использовать file_get_contents?

fsockopen наводит на мысли о бюсте Энгельса.
На самом деле тут не совсем подходят ни fsockopen, ни file_get_contents. В документации к API просят же, чтобы боты поддерживали сжатие gzip, а с curl это становится тривиальной задачей.
Есть как минимум 2 способа заставить curl понимать gzip.
file_get_contents если мне не изменяет память передаёт User-Agent.

В конце концов, главное не код — а принцип. Здесь он прозрачен. И это хорошо.
если не передать User-Agent будет ошибка
НЛО прилетело и опубликовало эту надпись здесь
«Подключаем на» — нет такого в русском языке. Можно «подключить к».
Как нету? «Пошел на», «Чо на»
пошел, чо != подключаем
«не можно» — гораздо круче!
А как вам такой вариант?

function get_wiki_url($title) {

    $context = stream_context_create(array(
        'http' => array(
                'method'=>"POST",
                    'content' => $reqdata = http_build_query(array(
                        'action' => 'opensearch',
                        'search' => $title,
                        'prop' => 'info',
                        'format' => 'xml',
                        'inprop' => 'url'
                )),
                'header' => implode("\r\n", array(
                        "Content-Length: " . strlen($reqdata),
                        "User-Agent: MyCuteBot/0.1",
                        "Connection: Close",
                        ""
                ))
    )));

    if (false === $response = file_get_contents("http://ru.wikipedia.org/w/api.php", false, $context)) {
        return false;
    }

    //парсим строку
    $xml = simplexml_load_string($response);
    return $xml->Section->Item;
}

var_dump ($pages_data = get_wiki_url("Мастер и Маргарита"));
Отлично.
Только var_dump не выводит все результаты
foreach ($pages_data as $data)
{
echo (string)$data->Text."<br><hr>";
echo (string)$data->Description."<br>";
}
Достаточно:
$context = stream_context_create(array('http' => array('header' => 'User-Agent: MyCuteBot/0.1')));

А первым параметром file_get_contents() весь УРЛ.
До этого топика не знал что у Википедии есть api. Спасибо :)
У MediaWiki, если быть точнее
А вот за этот комментарий вам отдельный плюс =)
Как-то странно)))
Сделайте имена известных людей ссылками на статьи о них в википедии. В чём проблема? Ссылки для этого и созданы!
Проблема, когда нужно проставить больше 1000 ссылок на авторов книг
пусть сначала русская википедия станет такой, чтобы на нее хотелось давать ссылки
Извините, если не совсем по теме. Давно ищу вики-машину для встраивания на сайт. Биографически-ориентированную (т.е. коллективное ведение неких белых страниц). Чтобы ее просто можно было подключить к существующей системе авторизации. Чтобы маркап-язык был не очень заумным, но допускал создание таблиц.
Посоветуете?
А как сделать что бы по нажатию «enter» работало?
2010 год на дворе. «Википедию» давно пора писать по-русски и склонять.
А как вытащить первый абзац или если быть точнее весь текст, что находится до содержания на странице о какой-либо личности? Есть идеи?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории