Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Gdasar
190 / 51 / 19
Регистрация: 18.02.2013
Сообщений: 488
Записей в блоге: 9
Завершенные тесты: 1
#1

Не работает парсинг

09.04.2013, 00:31. Просмотров 977. Ответов 19
Метки нет (Все метки)

Ребят,подскажите,почему не работает парсинг.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
 TStringList* Sections = new TStringList;
 int a=0,b=0;
 Sections->Text=Form1->Memo1->Lines->Strings[Form1->o];
 Form1->Memo1->Lines->Strings[Form1->o]="";
 a=((Sections->Text.Pos(Form1->Edit1->Text))+Form1->Edit1->Text.Length()); 
 Sections->Text.Delete(Sections->Text.Pos(Form1->Edit1->Text),(Sections->Text.Pos(Form1->Edit2->Text))+Form1->Edit2->Text.Length()); 
 b=(Sections->Text.Pos(Form1->Edit2->Text))+Form1->Edit2->Text.Length();
 Form1->Memo1->Lines->Strings[Form1->o]=Sections->Text.SubString(a,b+a);
 Form1->o++;
 Form1->Edit3->Text=IntToStr(a)+" "+IntToStr(b);
 a=b=0;
Вот исходный текст:

HTML5
1
2
3
4
5
http://www.cyberforum.ru/cpp-beginners/thread201804.html
http://vk.com/gdasar
http://www.smw75.ru/delphi-synapse-poluchaem-dannye-v-gzip/
http://www.webdelphi.ru/2011/06/ispolzuem-gzip-v-synapse/
http://********/index.asp?main=task&id_task=52
Вот что получается:
HTML5
1
2
3
4
5
6
www.cyberforum.
vk.com/gdasar
 
www.smw75.ru/de
www.webdelphi.r
http://********/index.asp?main=task&id_task=52
В Первом эдите http:// во втором /.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 00:31
Ответы с готовыми решениями:

не работает парсинг из фреймов !!!
есть код который должен из фреймов выдергивать гиперсылки , но он почему то не...

Не работает парсинг на PHP
Есть сайт http://oil-price.net/ , на его странице указана цена нефти WTI и...

Xml парсинг. Не работает
Есть xml документ: <?xml version="1.0" encoding="UTF-8"?> <xml_file> ...

Почему не работает парсинг сайта
Вот мое задание Возьмите любой Интернет-магазин, например, с ноутбуками....

Парсинг json. Не работает deserealize
Здравствуйте, возникла проблема: не работает deserealize, не могу понять в чём...

19
Ddv122
Почемучка)
1237 / 297 / 30
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
09.04.2013, 01:02 #2
а что получится то должно?
0
Gdasar
190 / 51 / 19
Регистрация: 18.02.2013
Сообщений: 488
Записей в блоге: 9
Завершенные тесты: 1
09.04.2013, 01:16  [ТС] #3
Почемучка)
Должно выпорсится урлы сайтов,без префиксов.
Например www.smw75.ru
0
Ddv122
Почемучка)
1237 / 297 / 30
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
09.04.2013, 11:18 #4
Gdasar, К примеру так,
C++
1
2
3
4
5
6
  String Str;
 String Text=("www.cyberforum.ru/cpp-beginners/thread201804.html");
    int begin= Text.Pos("www");
    int end= Text.Pos("/");
    if( begin && end )  Str= Text.SubString(begin,end-begin+String("").Length() );
  ShowMessage(Str);
Добавлено через 9 часов 23 минуты
Или строки в TStringList и делите их по "/" , ещё проще будет)
1
Gdasar
190 / 51 / 19
Регистрация: 18.02.2013
Сообщений: 488
Записей в блоге: 9
Завершенные тесты: 1
10.04.2013, 00:16  [ТС] #5
А с моим кодом скажи,что не так! Уж очень хочется понять,где я накосячил.

Добавлено через 8 часов 38 минут
Ddv122 твой код не сможет выпарсить урлы!
0
AntonChik
1085 / 583 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
10.04.2013, 06:13 #6
Gdasar, во-первых учись писать проще, код читать трудно. меньше повторений, больше промежуточных переменных.
во-вторых, зачем юзать TStringList, если ты пользуешься им как одиночным AnsiString?
в-третьих, если ты думаешь что в 7 строке происходит удаление, то ты ошибаешься...

C++
1
Sections->Text = Sections->Text.Delete(...
0
Gdasar
190 / 51 / 19
Регистрация: 18.02.2013
Сообщений: 488
Записей в блоге: 9
Завершенные тесты: 1
10.04.2013, 13:39  [ТС] #7
Ну а что же происходит в седьмой строке?
0
AntonChik
1085 / 583 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
10.04.2013, 13:50 #8
удаление происходит, но не применяется)
а если бы происходило, то в 9 строке бралась бы подстрока начиная с a и ты бы получал
erforum.
вместо
www.cyberforum.
так что тебе как бы повезло, но это косяк)
0
Gdasar
190 / 51 / 19
Регистрация: 18.02.2013
Сообщений: 488
Записей в блоге: 9
Завершенные тесты: 1
10.04.2013, 14:27  [ТС] #9
А как исправить косяк? Какие исправления внести?
0
Ddv122
Почемучка)
1237 / 297 / 30
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
10.04.2013, 15:08 #10
Цитата Сообщение от Gdasar Посмотреть сообщение
твой код не сможет выпарсить урлы!
и почему же стесняюсь спросить?
0
Gdasar
190 / 51 / 19
Регистрация: 18.02.2013
Сообщений: 488
Записей в блоге: 9
Завершенные тесты: 1
10.04.2013, 16:18  [ТС] #11
Цитата Сообщение от Ddv122 Посмотреть сообщение
и почему же стесняюсь спросить?
Может-может,только это не то,что мне нужно!
0
Avazart
Эксперт С++
7696 / 5605 / 543
Регистрация: 10.12.2010
Сообщений: 25,156
Записей в блоге: 17
10.04.2013, 17:08 #12
Офигеть, кто-то с регулярками boost/regex разобраться не может, а кому-то да же метод Pos() не по силам ....
1
Gdasar
190 / 51 / 19
Регистрация: 18.02.2013
Сообщений: 488
Записей в блоге: 9
Завершенные тесты: 1
10.04.2013, 17:31  [ТС] #13
Avazart мог бы здесь даже не писать! От тебя как всегда 0 помощи,только критики полно!
0
Avazart
Эксперт С++
7696 / 5605 / 543
Регистрация: 10.12.2010
Сообщений: 25,156
Записей в блоге: 17
10.04.2013, 17:41 #14
Если всегда не восприниМать критику ... у тебя всегда будет 0 ...

Если твой код никто не исправляет, а сразу пишут свой вариант, то стоит задуматься о своем стиле написания.
1
AntonChik
1085 / 583 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
11.04.2013, 05:37 #15
Цитата Сообщение от Gdasar Посмотреть сообщение
А как исправить косяк? Какие исправления внести?
как сделать чтоб удалялось, я написал, дальше сам поймешь что делать.

Цитата Сообщение от Ddv122 Посмотреть сообщение
и почему же стесняюсь спросить?
код не справится если url начнется с "http://" ))
1
Ddv122
Почемучка)
1237 / 297 / 30
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
11.04.2013, 14:59 #16
Цитата Сообщение от AntonChik Посмотреть сообщение
код не справится если url начнется с "http://" ))
Ну тогда -
Цитата Сообщение от Ddv122 Посмотреть сообщение
Или строки в TStringList и делите их по "/" , ещё проще будет)
Gdasar
Avazart мог бы здесь даже не писать! От тебя как всегда 0 помощи,только критики полно!
Зря вы так, блогом Avazart'A я уверен практически все пользуются, а критика всегда полезна
У меня по учебе выше С++ Builder 6 нельзя подниматься, вот и нет возможности использовать boost/regex
1
Avazart
Эксперт С++
7696 / 5605 / 543
Регистрация: 10.12.2010
Сообщений: 25,156
Записей в блоге: 17
11.04.2013, 16:01 #17
Цитата Сообщение от Ddv122 Посмотреть сообщение
У меня по учебе выше С++ Builder 6 нельзя подниматься, вот и нет возможности использовать boost/regex
Если я не ошибаюсь, то какую то старенькую версию boost можно установить, но не уверен..
Ну и опять же паскалевский модуль TRegExp
2
Ddv122
Почемучка)
1237 / 297 / 30
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
11.04.2013, 19:05 #18
Gdasar,
Так нужно?
2
Вложения
Тип файла: rar Parser.rar (179.3 Кб, 5 просмотров)
Gdasar
190 / 51 / 19
Регистрация: 18.02.2013
Сообщений: 488
Записей в блоге: 9
Завершенные тесты: 1
12.04.2013, 00:27  [ТС] #19
Ddv122 ну есле не жалко,то скинь тело проги...
0
Ddv122
Почемучка)
1237 / 297 / 30
Регистрация: 23.12.2010
Сообщений: 1,998
Записей в блоге: 1
12.04.2013, 00:33 #20
Gdasar, Вот держи
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  TStringList * list = new TStringList ; //создаем + 
   #define SS list->Strings  //Директива для быстрой работы
      Memo2->Clear(); //очистка прошлого результата
    for(int j=0; j<Memo1->Lines->Count; j++) //цикл по Memo1
    {
                if (Memo1->Lines->Strings[j].Pos("http://")==1) //если строка содержит http:// то...
                {
                    list->Clear();  //очищаем list
                    list->Delimiter = '//'; //устанавливаем разделитель
                    list->DelimitedText =  Memo1->Lines->Strings[j]; //разделяем строку
                    Memo2->Lines->Add("http://" + SS[2]); //результат в Memo2
   }
 
       }
 delete list; //удаление объекта
}
1
12.04.2013, 00:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2013, 00:33

Почему не работает многопоточный парсинг через webbrowser?
Привет всем. Я честно говоря фигею. Не пойму что происходит и в чем причина ....

Парсинг на JSOUP APACHE, не работает read и getInputStream
Начинаю писать парс под андроид для динамического сайта. Использую JSOUP и...

Как работает этот код - (парсинг текста)?
Наткнулся на такой пример на SO - пример. Весь код под спойлером, дабы не...


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

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

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