Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка в шаблоне.... / 8 сообщений из 8, страница 1 из 1
28.05.2007, 02:36:26
    #34554179
iliacompany
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в шаблоне....
Здравствуйте! Прошу Вашей помощи...
Пытаюсь распарсить страничку...написал шаблон (вроде как должен работать - дык нет)....мэтчер ничего не возвращает...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 public   class  ParsingClass {  
     public  Collection<Release> Parsing(String lPageForParse) {  
        Collection<Release> result =  new  ArrayList<Release>();
        
        Pattern ReleasePattern = Pattern.compile
        ("<SPAN class=prod>([0-9]{2}.[0-9]{2}.[0-9]{4})</SPAN><SPAN class=prod>(.*).*</SPAN><SPAN class=prod>([0-9]{1}.[0-9]{2}.[0-9]{3})</SPAN>.*href=.*(http://mysite.ru/download/.*)>.*",Pattern.DOTALL);

        //осуществляем поиск в входной строке по шаблону
        Matcher ReleaseMatcher = ReleasePattern.matcher(lPageForParse);       
         while  (ReleaseMatcher.find()){
            Release release =  new  Release();
            
            release.setnameRelease(ReleaseMatcher.group( 2 ));  //OutputNameRelease
            release.setnumberRelease(Integer.parseInt(ReleaseMatcher.group( 3 ))); //OutputNumberRelease
            release.sethardLink(ReleaseMatcher.group( 4 )); //OutputLink
            release.setdescription(ReleaseMatcher.group( 1 )); //OutputData
            
            result.add(release);
        }
         return  result;
        }
    }



При этом распарсиваемый код выглядит приближенно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<TD  class =content><SPAN  class =prod> 18 . 12 . 2006 </SPAN> </TD>
    <TD  class =content><SPAN  class =prod>Приложение1</SPAN> </TD>
    <TD  class =content><SPAN  class =prod> 7 . 70 . 027 </SPAN></TD>
    <TD  class =content><!--  133  -->
      <TABLE 
      style="BORDER-RIGHT: #d3d3d3 1px solid; BORDER-TOP: #d3d3d3 1px solid; BORDER-LEFT: #d3d3d3 1px solid" 
      cellSpacing= 0  cellPadding= 2  width="100%" bgColor=#ffffff border= 0 ><A 
        name=breakinsp133n0></A>
        <TBODY>
        <TR vAlign=top>
          <TD style="BORDER-BOTTOM: #d3d3d3 1px solid"><B>tradm271</B></TD>
          <TD style="BORDER-BOTTOM: #d3d3d3 1px solid"> </TD>
          <TD style="BORDER-BOTTOM: #d3d3d3 1px solid"><!-- 2126 --><NOBR><A 
            href="http://mysite.ru/download/parts/tradm271_parts/tradm271.2048k.rar">Скачать 
            одним архивом</A>

Подскажите, где мог накорячить???


with best regards
Ilya.
...
Рейтинг: 0 / 0
28.05.2007, 09:51:06
    #34554448
iliacompany
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в шаблоне....
Ребят, у кого-нибудь есть хоть какие-то мысли...а то я реально засел на этой проблеме....помогите

with best regards
Ilya.
...
Рейтинг: 0 / 0
28.05.2007, 10:00:45
    #34554465
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в шаблоне....
У тебя regexp не правильный (т.е. как написано так и работает), нету в твоем примере совпадений
...
Рейтинг: 0 / 0
28.05.2007, 10:03:56
    #34554475
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в шаблоне....
автор
<TD class=content><SPAN class=prod>18.12.2006</SPAN> </TD>
<TD class=content><SPAN class=prod>Приложение1</SPAN>


вот где например в регекспе описан выделенный жирным элемент?
...
Рейтинг: 0 / 0
28.05.2007, 12:08:39
    #34554854
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в шаблоне....
Используйте специальный библиотеки для разбора HTML-страницы, если не получается с помощью regexp. Например, HTMLParser.
...
Рейтинг: 0 / 0
02.06.2007, 22:47:44
    #34570049
iliacompany
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в шаблоне....
Ребят, прошу помощи...Написал такое регулярное выражение, но все равно не помогает......
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Pattern ReleasePattern = Pattern.compile
        (".*<TR>"+
    "<TD class .*>()</TD></TR><.*>"+
  "<TR onmouseover=\"this.className='over'\" onmouseout=\"this.className='out'\""+ 
  "vAlign=top>"+
    "<TD class=content><SPAN class=prod>()</SPAN> </TD>"+
    "<TD class=content><SPAN class=prod>()</TD>"+
    "<TD class=content><SPAN class=prod>()</SPAN></TD>"+
    "<TD class=content><.*><NOBR><A  href=()>.*</A>/*</TD></TR><.*>.*",Pattern.DOTALL);


пожайлуста, подскажите...совсем уже нет мыслей(((


with best regards
Ilya.
...
Рейтинг: 0 / 0
02.06.2007, 22:53:00
    #34570053
iliacompany
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в шаблоне....
Распарсиваемая страничка следующая:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<TR onmouseover="this.className='over'" onmouseout="this.className='out'" 
  vAlign=top>
    <TD  class =content><SPAN  class =prod>Нужно это выгребсти</SPAN> </TD>
    <TD  class =content><SPAN  class =prod>нужно это выгребсти</SPAN></TD>
    <TD  class =content><SPAN  class =prod>Это выгребсти</SPAN></TD>
    <TD  class =content><!--  969  --><NOBR><A 
      href="это выгребсти">finpl_124.txt</A> ( 7  kB)</NOBR><BR></TD></TR><!--  101  -->


Буду признателен за помощь...уже совсем растерялся(

with best regards
Ilya.
...
Рейтинг: 0 / 0
03.06.2007, 08:23:39
    #34570186
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в шаблоне....
Как пишут в умных книжках при построении регулярных выражений нужно добиться двух целей:
1. чтобы совпадение было там где надо
2. чтобы совпадений не было, там где не надо

добиться второго иногда сложнее. Вот regexp который добивается первой цели, но вам его еще придеться доделывать чтобы добиться второй:
Код: plaintext
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.
 import  java.util.regex.Pattern;
 import  java.util.regex.Matcher;

 public   class  TestRegexp {

     public   static   final  String TEXT = 
            "<TR onmouseover=\"this.className='over'\" onmouseout=\"this.className='out'\" \n" +
            "  vAlign=top>\n" +
            "    <TD class=content><SPAN class=prod>content1</SPAN></TD>\n" +
            "    <TD class=content><SPAN class=prod>content2</SPAN></TD>\n" +
            "    <TD class=content><SPAN class=prod>content3</SPAN></TD>\n" +
            "    <TD class=content><!-- 969 --><NOBR><A \n" +
            "      href=\"content4\">finpl_124.txt</A> (7 kB)</NOBR><BR></TD></TR><!-- 101 -->\n";


     public   static   void  main(String[] args) {

        Pattern pattern = Pattern.compile(
                ".*<SPAN class=prod>(.*)</SPAN>" +
                ".*<SPAN class=prod>(.*)</SPAN>" +
                ".*<SPAN class=prod>(.*)</SPAN>" +
                ".*\\bhref=\"(.*)\">.*", Pattern.DOTALL);

        Matcher matcher = pattern.matcher(TEXT);

         if  (matcher.matches()) {
            System.out.println(matcher.group( 1 ));
            System.out.println(matcher.group( 2 ));
            System.out.println(matcher.group( 3 ));
            System.out.println(matcher.group( 4 ));
        }
    }
}

PS: кажется что решать эту задачу через регулярные вырвжения не совсем корректно.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка в шаблоне.... / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]