С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
crokodilka93
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 16
#1

Парсинг html - Вывод всех ссылок с их текстовыми полями - C++

29.05.2014, 22:35. Просмотров 365. Ответов 8
Метки нет (Все метки)

Доброго времени суток, уважаемые форумчане!
Недавно встал вопрос о написании парсера для html. Задача парсинга: вывод всех ссылок с их текстовыми полями.
Как можно реализовать без спец. либов для парсинга?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 22:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг html - Вывод всех ссылок с их текстовыми полями (C++):

Работа с текстовыми файлами: Вывод из текстового файла - C++
Доброго времени суток! Есть проблема с выводом из текстового файла, прошу помочь. Суть проблемы: При выводе из текстового файла последняя...

Парсинг HTML - C++
Не подскажите, как можно пропарсить HTML файл на чистом C++. Правильность и адекватность файла гарантируется, теги только самые...

Парсинг html - C++
Здравствуйте, уважаемые форумчане! Я мало знаю на тему парсинга и вот мне нужно вытащить информацию с сайта http://www.igumo.ru/. Слева...

Парсинг ссылок из HTML документа - C#
Вот такой код нашел на просторах интернета: List links = new List(); foreach (HtmlElement link in webBrowserDocument.Links) { ...

Парсинг всех ссылок в массив - PHP
Помогите примерчик сообразить, желательно с выводом n одного из элементов массива все ссылки в формате: <a href="ССЫЛКА"...

Парсинг ссылок используя Html Agility Pack - C#
Здравствуйте. Подскажите пожалуйста , можно ли как то более точно фильтровать полученные ссылки Делаю так HtmlDocument doc = new...

8
Max Dark
шКодер самоучка
1852 / 1652 / 603
Регистрация: 09.10.2013
Сообщений: 3,678
Записей в блоге: 6
Завершенные тесты: 2
29.05.2014, 23:59 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <istream>
#include <fstream>
#include <vector>
#include <string>
#include <cctype>
 
using namespace std;
 
struct link {
    std::string tag;
    std::string text;
};
typedef struct link link;
typedef std::vector < link > linkVector;
 
size_t parseLinks(istream &in, linkVector &links) {
    size_t count = 0;
    std::string line;
    link tmp;
 
    while(in) {
        getline(in, line,    '<');
        getline(in, tmp.tag, '>');
        if( 6   >= tmp.tag.length() ||
            '/' == tmp.tag[tmp.tag.length()-1])
            continue;
        if( 'a'    != tolower(tmp.tag[0]) ||
             false == isspace(tmp.tag[1]))
            continue;
        tmp.text = "";
        line = "";
        do {
            tmp.text += line;
            getline(in, line, '<');
            tmp.text += line;
            getline(in, line, '>');
        }
        while( 2 < line.length() ||
              '/' != line[0]);
        links.push_back(tmp);
        ++count;
    }
    return count;
}
int main() {
    return(0);
}
0
crokodilka93
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 16
30.05.2014, 00:06  [ТС] #3
Круто! Но, можно немного прокомментировать, если не затруднит?
0
Max Dark
шКодер самоучка
1852 / 1652 / 603
Регистрация: 09.10.2013
Сообщений: 3,678
Записей в блоге: 6
Завершенные тесты: 2
30.05.2014, 00:33 #4
Код
пока есть данные
    пропустить до начала тега
    считать внутренности
    если тег не подходит, в начало цикла
    считать текст до закрывающего тега
    добавить пару тег-текст в список
конец
0
crokodilka93
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 16
30.05.2014, 00:41  [ТС] #5
Это понятно, но а как загружать данные?

Добавлено через 4 минуты
Цитата Сообщение от Cra3y Посмотреть сообщение
Код
пока есть данные
    пропустить до начала тега
    считать внутренности
    если тег не подходит, в начало цикла
    считать текст до закрывающего тега
    добавить пару тег-текст в список
конец
Я имею ввиду, как мне загрузить саму страницу в код?
0
Max Dark
шКодер самоучка
1852 / 1652 / 603
Регистрация: 09.10.2013
Сообщений: 3,678
Записей в блоге: 6
Завершенные тесты: 2
30.05.2014, 00:51 #6
из файла например
C++
1
2
3
std::ifstream file("test.htm");
linkVector links;
size_t cnt = parse(file, links);
0
crokodilka93
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 16
30.05.2014, 00:54  [ТС] #7
А если обойтись без загрузки файла, а считывать прямиком по ссылке?
Извините, что туплю, просто я новичок и для меня это пока сверхъестественные вещи...
0
Max Dark
шКодер самоучка
1852 / 1652 / 603
Регистрация: 09.10.2013
Сообщений: 3,678
Записей в блоге: 6
Завершенные тесты: 2
30.05.2014, 01:01 #8
Тогда прочитайте как устроен интернет, HTTP IP/TCP и т.д.
потом можете почитать про boost::asio
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
30.05.2014, 07:07 #9
Цитата Сообщение от crokodilka93 Посмотреть сообщение
А если обойтись без загрузки файла, а считывать прямиком по ссылке?
Извините, что туплю, просто я новичок и для меня это пока сверхъестественные вещи...
Можно curl использовать.
0
30.05.2014, 07:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2014, 07:07
Привет! Вот еще темы с ответами:

Парсинг html файла для поиска ссылок - C#
Добрий день. Стоит задача найти и пропарсить html файлы в фолдере. Найти понятно как. А вот как их пропарсить? Смысл в том, что я...

Парсинг всех ссылок регулярным выражением - C#
Добрый вечер. Такая проблема: мне нужно спарсить все ссылки с сайта www.rt.com используя регулярные выражения. Почитал документацию,...

Парсинг ссылок через PHP Simple HTML DOM Parser - PHP
Здравствуйте. Возникла проблема с работой данного скрипта. &lt;?php require_once 'simple_html_dom.php'; $data =...

Парсинг сайтов. Поиск всех ссылок на странице - Python
Суть вопроса думаю ясна. Есть интернет страница, с нее нужно выдрать ссылки. Решил воспользоваться lxml.html. Делаю аналогично примеру...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.