Как вывести в C ++ все ссылки из сохраненного файла .html, которые находятся в тегах <a href>? - PullRequest
0 голосов
/ 18 марта 2019

В настоящее время пишется программа, которая с учетом URL сохранит копию HTML страницы в файле .txt, а затем попытается проанализировать эти файлы .txt на наличие гиперссылок в тегах.Пример:

<a href="http://www.example.com">Visit example.com!</a>

Сейчас все работает, кроме парсера.Я вывожу содержимое html файла в .txt.Затем я преобразую его в строку, а затем пытаюсь разобрать эту строку с помощью регулярных выражений и сохранить все гиперссылки в векторе.Я думаю, распечатать содержимое этого вектора.Код для секции синтаксического анализа моего кода выглядит следующим образом:

vector<string> extract_hyperlinks(string html_file_name )
{
    static const regex hl_regex( "<a href=\"(.*?)\">", regex_constants::icase ) ;

    const string text = file_to_string(html_file_name) ;

    sregex_token_iterator begin( text.begin(), text.end(), hl_regex, 1 );
    sregex_token_iterator end ;
    return vector<string>( begin, end ) ;
}

Парсер не помещает ничего в вектор, даже если строка заполняется файлом .txt, преобразованным в строку, что явносодержит значения, такие как <a href="http://www.example.com">Visit example.com!</a>.

Что я делаю не так и как я могу это исправить?

1 Ответ

0 голосов
/ 18 марта 2019

Попробуйте это.

vector<string> extract_hyperlinks(string html_file_name )
{
    static const regex hl_regex( "<a href=\"(.*?)\">", regex_constants::icase );
    const string text = file_to_string(html_file_name) ;

    std::vector<std::string> ret_vec;
    std::copy( std::sregex_token_iterator(text.begin(), text.end(), hl_regex, 1),
              std::sregex_token_iterator(),
              std::back_inserter(ret_vec));
    return ret_vec;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...