Что я делаю
Я пишу сканер в OCaml.Используя функцию string_of_uri
(ниже), определенную nlucaroni в предыдущем ответе на мой вопрос, я могу получить HTML-текст URL-адреса из Интернета.
let string_of_uri uri =
try let connection = Curl.init () and write_buff = Buffer.create 1763 in
Curl.set_writefunction connection
(fun x -> Buffer.add_string write_buff x; String.length x);
Curl.set_url connection uri;
Curl.perform connection;
Curl.global_cleanup ();
Buffer.contents write_buff;
with _ -> raise (IO_ERROR uri)
Я уже написал некоторый код для извлечения списка всех гиперссылок в извлеченном HTML (т. Е. Все части [LINK] в любом подобном <A HREF="[LINK]">text</A>
).Все это прекрасно работает.
Проблема
Проблема в том, что некоторые страницы перенаправляют вас, и я не знаю, как выполнить перенаправление.Например, моя программа выведет 0 тегов на странице http://en.wikipedia.org, потому что Википедия фактически перенаправит вас на http://en.wikipedia.org/wiki/Main_Page. Если я передам эту последнюю страницу моей программе, все будет работать нормально.Но если я приведу начальный, он просто возвращает 0 <A>
тегов.
К сожалению, для ocurl нет документации вообще, кроме имен функций в интерфейсе.Кто-нибудь имеет представление о , как я могу улучшить вышеуказанную функцию string_of_uri
, чтобы она следовала любым возможным перенаправлениям и выводила HTML-код последней страницы, в которую она попадает?
Я заметилчто применение функции Curl.get_redirectcount
к connection
на http://en.wikipedia.org возвращает 0, а это не то, чего я ожидал, поскольку страница перенаправлена на другую страницу ...
Спасибо залюбая помощь!
Всего наилучшего, Surikator.