Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73

Как можно спарсить страницу и получить описание?

04.08.2020, 10:31. Показов 5955. Ответов 61
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу сделать парсер описания каналов ютуб и желательно получать свой текст с помощью регулярок. Например https://www.youtube.com/user/PewDiePie/about

Какие библиотеки помогут в этом деле?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.08.2020, 10:31
Ответы с готовыми решениями:

Каким методом можно спарсить такую страницу?
Вот страничка - https://live.fonbet.com/?locale=ru#1

Как спарсить HTML страницу?
Вот скриншот Нужно получить "Производитель" и "Toyota", хелп

Как спарсить целую страницу и со стилями
вот удалось спарсить страницу но она выводится без стилевого оформления. Есть ли возможность спарсить страницу вместе с стилевым...

61
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
04.08.2020, 18:19  [ТС]
Студворк — интернет-сервис помощи студентам
Есть еще парсеры html страницы желательно по атрибутам? Как https://simplehtmldom.sourceforge.io/manual.htm
0
Just Do It!
 Аватар для XLAT
4197 / 2652 / 654
Регистрация: 23.09.2014
Сообщений: 8,945
Записей в блоге: 3
04.08.2020, 18:21
ха,
про написание документации автору никто не рассказывал,
либо он делал для себя на пару запусков,
либо для кого-то, но так, чтобы его не забывали.

вот это и есть типичный гуанокод.
0
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
04.08.2020, 18:32  [ТС]
А как этот код в функцию превратить и вызывать ее так?
C++
1
2
3
4
5
int main(){
cout << "Введите ссылку на канал" << endl;
cin >> link;
getDescription(link);
}
0
Just Do It!
 Аватар для XLAT
4197 / 2652 / 654
Регистрация: 23.09.2014
Сообщений: 8,945
Записей в блоге: 3
04.08.2020, 18:37
Цитата Сообщение от polakware Посмотреть сообщение
А как этот код в функцию превратить и вызывать ее так?
C++
1
2
3
4
5
6
7
8
9
int main_xxx()
{   cout << "Введите ссылку на канал" << endl;
    cin >> link;
    getDescription(link);
}
 
int main()
{   main_xxx();
}
0
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
04.08.2020, 18:39  [ТС]
Не этот, а который вы кинули с сохранением исходного кода сайта
0
Just Do It!
 Аватар для XLAT
4197 / 2652 / 654
Регистрация: 23.09.2014
Сообщений: 8,945
Записей в блоге: 3
04.08.2020, 18:44
Цитата Сообщение от polakware Посмотреть сообщение
который вы кинули
а вы ютубом там разобрались?
у меня там галиматью грузит как раз с ютуба.

киберфорумом же всё нормально загружается.

Цитата Сообщение от polakware Посмотреть сообщение
Не этот
переименуйте там main() по вкусу и вызывайте где захочется.
0
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
04.08.2020, 18:45  [ТС]
У меня не вся страница поместилась в файл, только часть. С курлом еще не разобрался, там выдает Unsupported protocol. Эту ошибку я пытался фиксить добавив в солюшн курла либы и инклюды опенссла, но ничего не вышло
0
Just Do It!
 Аватар для XLAT
4197 / 2652 / 654
Регистрация: 23.09.2014
Сообщений: 8,945
Записей в блоге: 3
04.08.2020, 18:51
Цитата Сообщение от polakware Посмотреть сообщение
но ничего не вышло
придётся возвращаться к nmake,
вроде он там согласно мануалу может потебно конфигурировать чуть ли не из коропки.

я чуть позже посмотрю.

Добавлено через 1 минуту
Цитата Сообщение от polakware Посмотреть сообщение
У меня не вся страница поместилась в файл, только часть.
млин. я аж не верю.
у меня галиматья такая что ничто не распарсит
0
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
04.08.2020, 19:36  [ТС]
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
curl_gssapi.c
        cl /O2 /DNDEBUG /MD /DCURL_STATICLIB /I. /I ../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /DUSE_OPENSSL /I"../../deps/include\openssl"  /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES  /DUSE_IPV6  /DUSE_WINDOWS_SSPI /Fo"..\builds\libcurl-vc-x86-release-static-ssl-static-ipv6-sspi-obj-lib/curl_memrchr.obj"  ..\lib\curl_memrchr.c
curl_memrchr.c
        cl /O2 /DNDEBUG /MD /DCURL_STATICLIB /I. /I ../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /DUSE_OPENSSL /I"../../deps/include\openssl"  /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES  /DUSE_IPV6  /DUSE_WINDOWS_SSPI /Fo"..\builds\libcurl-vc-x86-release-static-ssl-static-ipv6-sspi-obj-lib/curl_multibyte.obj"  ..\lib\curl_multibyte.c
curl_multibyte.c
        cl /O2 /DNDEBUG /MD /DCURL_STATICLIB /I. /I ../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /DUSE_OPENSSL /I"../../deps/include\openssl"  /DUSE_WIN32_IDN /DWANT_IDN_PROTOTYPES  /DUSE_IPV6  /DUSE_WINDOWS_SSPI /Fo"..\builds\libcurl-vc-x86-release-static-ssl-static-ipv6-sspi-obj-lib/curl_ntlm_core.obj"  ..\lib\curl_ntlm_core.c
curl_ntlm_core.c
..\lib\curl_ntlm_core.c(61): fatal error C1083: Не удается открыть файл включение: openssl/des.h: No such file or directory,
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x86\cl.EXE" : возвращенный код "0x2"
Stop.
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x86\nmake.exe" : возвращенный код "0x2"
Stop.
 
C:\Users\dkari\Desktop\curl-7.71.1\winbuild>


Добавлено через 4 минуты
Все понял, не указал WITH_DEVIL Опенссла

Добавлено через 1 минуту
Code
1
2
3
4
5
LINK : fatal error LNK1181: не удается открыть входной файл "libeay32.lib"
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x86\link.exe" : возвращенный код "0x49d"
Stop.
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x86\nmake.exe" : возвращенный код "0x2"
Stop.
И появилась другая ошибка

Добавлено через 36 минут
Кто компилил курл с ссл через nmake, где вы качали опенссл, может у меня не то скачано?
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
04.08.2020, 19:48
Цитата Сообщение от polakware Посмотреть сообщение
Эту ошибку я пытался фиксить добавив в солюшн курла либы и инклюды опенссла
Зачем в проект добавлять директрию OpenSSL? Нужно библиотеку собрать, а при сборке указать параметр и дать для этого параметра путь до OpenSSL.

Добавлено через 3 минуты
В исходных файлах есть папка winbuild. В ней файл BUILD.WINDOWS.txt, почитай.

Добавлено через 15 секунд
В исходных файлах есть папка winbuild. В ней файл BUILD.WINDOWS.txt, почитай.
0
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
04.08.2020, 19:54  [ТС]
Цитата Сообщение от Nishen Посмотреть сообщение
В исходных файлах есть папка winbuild. В ней файл BUILD.WINDOWS.txt, почитай.
Code
1
2
3
4
5
6
7
Copying libs...
[S]NMAKE : fatal error U1073: не хватает сведений для построения "..\src\tool_hugehelp.c"
Stop.
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\HostX86\x86\nmake.exe" : возвращенный код "0x2"
Stop.
 
C:\Users\dkari\Desktop\git\curl\winbuild>[/S]


В deps это https://windows.php.net/downlo... 16-x86.zip


UPD: исправил https://github.com/curl/curl/issues/1724
0
Just Do It!
 Аватар для XLAT
4197 / 2652 / 654
Регистрация: 23.09.2014
Сообщений: 8,945
Записей в блоге: 3
04.08.2020, 20:00
Цитата Сообщение от polakware Посмотреть сообщение
И появилась другая ошибка
чтобы ютуб загрузить, вот тут проделал такую магию:

все магические действия делал повторяя за автором этого видео:
1
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
04.08.2020, 20:05  [ТС]
Цитата Сообщение от Nishen Посмотреть сообщение
В исходных файлах есть папка winbuild. В ней файл BUILD.WINDOWS.txt, почитай.
Вышел файл в git\curl\builds\libcurl-vc-x86-release-static-ssl-static-ipv6-sspi\[bin,include,lib], добавил инклюд и либ куда надо и появилась такая ошибка, скорее всего что-то неправильно.
Code
1
2
Серьезность  Код  Описание    Проект    Файл    Строка    Состояние подавления
Ошибка    LNK2001 неразрешенный внешний символ "__imp_curl_easy_init"   CURLTest    C:\Users\dkari\source\repos\CURLTest\CURLTest\main.obj  1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <windows.h>
#include <curl/curl.h>
 
 
 
size_t WriteCallback(char* contents, size_t size, size_t nmemb, void* userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}
 
int main() {
    CURL* curl;
    curl = curl_easy_init();
    std::string readBuffer;
 
    curl_easy_setopt(curl, CURLOPT_URL, "https://www.googleapis.com/youtube/v3/channels?part=snippet&part=statistics&forUsername=pewdiepie&key=token");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
}
0
Just Do It!
 Аватар для XLAT
4197 / 2652 / 654
Регистрация: 23.09.2014
Сообщений: 8,945
Записей в блоге: 3
04.08.2020, 20:06
сырец моего теста:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
///----------------------------------------------------------------------------|
/// Использование cURL для доступа к HTTPS
///----------------------------------------------------------------------------|
#define CURL_STATICLIB
#pragma comment( lib, "ws2_32.lib" )
#pragma comment( lib, "Wldap32.lib" )
#pragma comment (lib, "libcurld.lib")
 
#include <iostream>
#include <string>
#include <curl/curl.h>
 
/// Фнкция, вызываемая cURL для записи полученых данных:
size_t curlWriteFunc(char* data, size_t size, size_t nmemb, std::string* buffer)
{
    size_t result = 0;
 
    if (buffer != NULL)
    {   buffer->append(data, size * nmemb);
        result = size * nmemb;
    }
    return result;
}
 
///----------------------------------------------------------------------------|
/// Тест.
///----------------------------------------------------------------------------:
int main(int argc, char* argv[])
{
    std::string curlBuffer;
    // запрашиваемая страничка(путь до login screen)
    const char* url = "https://www.youtube.com/user/PewDiePie/about";
    // передаваемые параметры
    const char* urlPOST = "login=ИМЯ&password=ПАСС&cmd=login";
 
    // буфер для сохранения текстовых ошибок
    char curlErrorBuffer[CURL_ERROR_SIZE];
 
    CURL* curl = curl_easy_init();
 
    if (curl) 
    {
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 1);
 
        curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curlErrorBuffer);
 
        // задаем URL...
        curl_easy_setopt(curl, CURLOPT_URL, url);
        // переходить по "Location:" указаному в HTTP заголовке  
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
        // не проверять сертификат удаленного сервера
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
        // использовать метод POST для отправки данных
        curl_easy_setopt(curl, CURLOPT_POST, 1);
        // параметры POST
        //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, urlPOST);
        // функция, вызываемая cURL для записи полученых данных
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &curlBuffer);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curlWriteFunc);
 
        // выполнить запрос
        CURLcode curlResult = curl_easy_perform(curl);
        // завершение сеанса
        curl_easy_cleanup(curl);
 
        if (curlResult == CURLE_OK)
        {   std::cout << curlBuffer << std::endl;
 
        }
        else 
        {   std::cout << "Ошибка(" << curlResult << "): " 
                      << curlErrorBuffer << std::endl;
            std::cin.get();
            return(-1);
        }
    }
 
    std::cin.get();
    return 0;
}
1
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
04.08.2020, 20:09  [ТС]
XLAT, спасибо, но лучше подключу курл с ssl
0
Just Do It!
 Аватар для XLAT
4197 / 2652 / 654
Регистрация: 23.09.2014
Сообщений: 8,945
Записей в блоге: 3
04.08.2020, 21:07
Цитата Сообщение от polakware Посмотреть сообщение
курл с ssl
магия такая:
1. Качаем исходники карла curl-7.71.1.zip и распаковываем.
2. В проектах выбираем curl-7.71.1\projects\Windows\VC15
3. Конфигурация:

4. Качаем OpenSSL Nupkg-манегером (в студии(2019) во вкладе Tools):

5. Настраиваем пути на скаченный и установленный пакидж.
5.1 Внимание: тут главное прямые лапки аккуратность и опять же внимание(тельность).
6. Компилим либу на ура:


7. Далее тест(код тот же: см. выше по треду).
8. Настраиваем пути на скомпиленную либу и инклуд из карла.
8.1 Внимание: тут главное аккуратность и опять же внимание(тельность).
...
9. Всё работает!!!
0
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
05.08.2020, 10:27  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
В проектах выбираем curl-7.71.1\projects\Windows\VC15
Открыл curl-all.sln, но у меня там только два проекта(curl, libcurl), а у вас больше.
И выдало такую ошибку:
Code
1
2
3
4
Серьезность  Код  Описание    Проект    Файл    Строка    Состояние подавления
Ошибка    LNK1181 не удается открыть входной файл "libcurl.lib"    curl    C:\Users\dkari\Desktop\curl-7.71.1\projects\Windows\VC15\src\LINK   1   
Серьезность  Код  Описание    Проект    Файл    Строка    Состояние подавления
Ошибка    LNK1181 не удается открыть входной файл "libeay32.lib"   libcurl C:\Users\dkari\Desktop\curl-7.71.1\projects\Windows\VC15\lib\LINK   1
Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
3. Конфигурация:
А там где проекты ALL_BUILD, curl, install нет конфигураций как у вас на скрине
0
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
05.08.2020, 10:38  [ТС]
Также unsupported protocol

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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <windows.h>
#include <curl/curl.h>
 
#pragma comment (lib, "libcurl_imp.lib")
 
 
using namespace std;
 
size_t WriteCallback(char* contents, size_t size, size_t nmemb, void* userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}
 
int main() {
    CURL* curl;
    CURLcode res;
 
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://youtube.com/user/PewDiePie/about");
        /* example.com is redirected, so we tell libcurl to follow redirection */
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
 
        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
        /* Check for errors */
        if (res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                curl_easy_strerror(res));
 
        /* always cleanup */
        curl_easy_cleanup(curl);
    }
    return 0;
}
Миниатюры
Как можно спарсить страницу и получить описание?   Как можно спарсить страницу и получить описание?  
0
Заблокирован
05.08.2020, 12:15
Цитата Сообщение от polakware Посмотреть сообщение
Может на апи легче будет
Легче будет через ActiveX (IE), получите почти нормальную страницу с готовым DOMом.

Добавлено через 2 минуты
Цитата Сообщение от polakware Посмотреть сообщение
Также unsupported protocol
Вы скачали другой curl ?
мой libcurl 7.71.1 x64
0
2 / 2 / 1
Регистрация: 16.02.2020
Сообщений: 73
05.08.2020, 14:34  [ТС]
Цитата Сообщение от SmallEvil Посмотреть сообщение
Вы скачали другой curl ?
мой libcurl 7.71.1 x64
Этот https://curl.haxx.se/download/curl-7.71.1.zip
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.08.2020, 14:34
Помогаю со студенческими работами здесь

Как спарсить страницу, типа авторизовавшись?
Здравствуйте товарищи!!! Помогите пожалуйста. Такая проблема: нужно получить страницу с сайта. Получать будем функцией ...

Synapse: Как спарсить страницу HTTPS?
Как спарсить страницу HTTPS, https://vk.com, например? С помощью HttpGetText не парсит

Как можно спарсить курсы крипты?
Как можно спарсить курсы криптовалют с таких площадок как: 1. https://blockchain.info/ru/api/exchange_rates_api 2....

Спарсить страницу
Всем привет) давно не заходил, нужна ваша помощь) procedure TForm1.Button1Click(Sender: TObject); var ip: string; begin ...

Спарсить страницу
Есть ли функция на подобие file_get_cintents(), которая сразу разбивает текст по блокам? Пример: &lt;!-- @html --&gt; &lt;html&gt;...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru