Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анализ сайта, например название страницы 
:(
    Опции темы
powerOn
Дата 23.1.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Буду короче. Ты этой строчкой делаешь примерно следующее:

Код

this.ht(url.openConnection());


и естественно метода ht у класса src нет. Вот ошибка.
Может так подойдет?

Код

ht = url.openConnection();



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
LSD
Дата 23.1.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Значита так, что я нашел у тебя:

1. Ты ловишь ошибки но никуда их не выводишь, может у тебя проблема с установкой соединения, а может еще что. Так ты никогда не узнаешь.

2. Ты читаешь данные в buffer, а совпадение ищешь в str.

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

Для начала исправь их, потом будем дальше разбираться.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Berliner
Дата 23.1.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



ОК. Спасиб смотрю
PM   Вверх
Berliner
Дата 23.1.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Вроде 2,3 пункты я исправил
насчет соединения -соединение устанавливается нормально
Про эксепшины я сейчас читаю как правильно обрабатывать.
Код

class scr {
 String str;

 public void scr(){
      
try {
    
URL url=new URL("http://vingrad.ru"); //подключаем 
HttpURLConnection http=(HttpURLConnection) url.openConnection();    //устанавливаем соединение
BufferedReader reader = new BufferedReader                            
(new InputStreamReader(http.getInputStream(),http.getContentEncoding()));// создаем ридер (ридер)
//он будет использоваться для чтения
        
        
        
StringBuffer buffer=new StringBuffer(); //создаем буфер(buffer) в который будем писать данные
while ((str=reader.read(buffer))!=null) { //читаем с помощью ридера(reader) и заносим в переменную str
       buffer.append(str); //добавляем в буфер(buffer) результат считывания str 
    
Pattern pattern=Pattern.compile("<head>(.*)<\\/head>",Pattern.CASE_INSENSITIVE| Pattern.MULTILINE | Pattern.DOTALL);
Matcher matcher=pattern.matcher(buffer); //ищем совпадение 

while (matcher.find()==true)
{System.out.println("Head: " + matcher.group(1));
 

}

                                        }

    }
catch(IOException e) {
//System.out.print("Введите правиьно ссылку");
                      }
    
 } 


 

}




но вылазит такая ошибка


C:\Documents and Settings\Administrator\Рабочий стол\istr\src\istr\istr.java:326: cannot find symbol
symbol : method read(java.lang.StringBuffer)
location: class java.io.BufferedReader
while ((str=reader.read(buffer))!=null) { //читаем с помощью ридера(reader) и заносим в переменную str
1 error
СБОРКА ЗАВЕРШЕНА НЕУДАЧНО (общее время: 0 секунд)

Код


this.ht(url.openConnection());

не получается так.
PM   Вверх
chief39
Дата 23.1.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Он не может найти метод в который передаётся StringBuffer
Есть только метод, в коотрый передаётся String

В код не вчитывался но

вместо
Код

while ((str=reader.read(buffer))!=null) 

сделай
Код

while ((str=reader.read(buffer.toString()))!=null) 



--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
batigoal
Дата 23.1.2006, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Судя по доке, так тоже не выйдет. Ему нужен массив char[].


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
LSD
Дата 23.1.2006, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Berliner @ 23.1.2006, 19:16 Найти цитируемый пост)
Про эксепшины я сейчас читаю как правильно обрабатывать.

На время отладки, вполне достаточно:
Код
try
{
.....
}
catch(Exception ex)
{
  ex.printStackTrace();
}


Метод read() принимает в качестве аргумента или char[] или CharBuffer. Мне кажется на даном этапе обучения связываться с CharBuffer, не стоит.

Чем тебе не нравится тот код, что я тебе привел? Он полностью рабочий, за исключением одного момента. httpConnection.getContentEncoding() иногда возвращает null (на винграде например так). Поэтому надо кодировку или указать вручную, или не указывать вообще: Reader reader = new InputStreamReader(httpConnection.getInputStream());.




--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Berliner
Дата 24.1.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Цитата

Чем тебе не нравится тот код, что я тебе привел? Он полностью рабочий, за исключением одного момента. httpConnection.getContentEncoding() иногда возвращает null (на винграде например так).

Спасиб! ничего против твоего кода я не имею- просто пытаюсь сам писать, так я лучше усваиваю. ок спасиб буду разбираться в коде
PM   Вверх
Berliner
Дата 2.2.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Я так понял тут регулярое выражение вылавливает первую строку текста
между тегами head. а как например сделать чтобы если находит слово подробности выдавал с помощью drawstring("Нашел",13,20)
я составил такое рег выражения "^Подробности$" но не работает в коде. Подскажитепожалуста, что неправильно сделал? И как работу с drawstring класса Graphics сюда прикрутить?
Код

URL url = new URL("http://forum.vingrad.ru/index.php");
HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
Reader reader = new InputStreamReader(httpConnection.getInputStream(), httpConnection.getContentEncoding());
StringBuffer strBuffer = new StringBuffer(5 * 1024);
char[] buffer = new char[512];
int read;
while((read = reader.read(buffer)) != -1)
  strBuffer.append(buffer, 0, read);
Pattern headPattern = Pattern.compile("<head>(.*)<\\/head>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
Matcher headMatcher = headPattern.matcher(strBuffer);
while(headMatcher.find())
  System.out.println("Head: " + headMatcher.group(1));


PM   Вверх
LSD
Дата 2.2.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Berliner @ 2.2.2006, 14:45 Найти цитируемый пост)
Я так понял тут регулярое выражение вылавливает первую строку текста
между тегами head.

Нет, он находит весь текст между тегами head, независимо от того сколько строк он занимает.

Цитата(Berliner @ 2.2.2006, 14:45 Найти цитируемый пост)
я составил такое рег выражения "^Подробности$" но не работает в коде.

Это регулярно выражение требует: чтобы вся входная строка символос состояла из Подробности больше, ничего в ней быть не должно (при условии что регулярное скомпилированно с флагами CASE_INSENSITIVE, MULTILINE, DOTALL).

Цитата(Berliner @ 2.2.2006, 14:45 Найти цитируемый пост)
И как работу с drawstring класса Graphics сюда прикрутить?

Тебе нужно создать свой компонент и в его методе paint() уже можно будет рисовать. Только надо ли это? Если хочешь отобразить данные в окне, есть способы и попроще.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Berliner
Дата 2.2.2006, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Цитата

ебе нужно создать свой компонент и в его методе paint() уже можно будет рисовать. Только надо ли это? Если хочешь отобразить данные в окне, есть способы и попроще.

Хочу что-то типа как в Delphi Showmessage каой есть аналог?

Нашел что- то -написал нашел!
PM   Вверх
LSD
Дата 2.2.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Berliner @ 2.2.2006, 16:54 Найти цитируемый пост)
Хочу что-то типа как в Delphi Showmessage каой есть аналог?

Код
JOptionPane.showMessageDialog(Main.this, "Do your realy wont to quit?", "Confirmation", JOptionPane.INFORMATION_MESSAGE);



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Berliner
Дата 2.6.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Этекранировал спец символы /  в регулярном выражение - дает ошибку на компиляции. Подскажите как правильно
Код

Pattern pattern=Pattern.compile(" size=-1\>ATM00071 \<\/FONT\>\<\/A\>\<\/TD\>",Pattern.CASE_INSENSITIVE| Pattern.MULTILINE|Pattern.DOTALL);

 
PM   Вверх
LSD
Дата 3.6.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



1. Тут идет двойное экранирование: 1-ое это экранирование символа \ в строковых литералах, 2-ое это то что ты пытался экранировать. Выглядеть это будет так:
Код
Pattern p1 = Pattern.compile(" size=-1\\>ATM00071 \\<\\/FONT\\>\\<\\/A\\>\\<\\/TD\\>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);


2. Символ / и < не имею никакого особого значения в регулярных выражениях и в экранировании не нуждаются. 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Berliner
Дата 6.6.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: 1
Всего: 2



Спасиб за ответ

Вот пишу програмку и есть некоторые  трудности в написании кода
Подскажите плиз
Код

class FileR{
        
int read,i;
String stroka;

    
public void readF(){
    
File filename=new File("c:/atm.txt");


String atm [] = new String [10];

atm[0]="ATM00071";
atm[1]="ATM00072";
atm[2]="ATM00073";
atm[3]="ATM00262";
atm[4]="ATM00416";
atm[5]="00547";
atm[6]="00566";
atm[7]="00692";
atm[8]="00781";
atm[9]="00782";
for (i=0; i<9; i++)// do till atm i
{
System.out.println(atm[i]);
}



try {
        
FileReader reader=new FileReader(filename);
StringBuffer StrBuffer=new StringBuffer (5*1024);


char[] buffer=new char[512];


while ((read=reader.read(buffer))!=-1)
    
{
   
StrBuffer.append(buffer,0,read);   
Pattern pattern=Pattern.compile(".+00071+.",Pattern.CASE_INSENSITIVE| Pattern.MULTILINE|Pattern.DOTALL);
Matcher matcher=pattern.matcher(StrBuffer);


if (matcher.find()) {

 
    
  
System.out.println("тег "+matcher.group(0));

break;

}
else 
   JOptionPane.showMessageDialog(null,"ничего не нашел",null,JOptionPane.YES_NO_OPTION);
    break;

}

}






Эта програмка должна анализировать сайт на сайте отображается состояние cash point-ов, если ATM не работает то высвечивется N в определееном месте. Каждый банкомат имеет свое имя. (как "подключиться к сайту" я знаю). 
сложности следующие: 
мне нужно чтобы найдя банкомат(по имени) с помощью регялярного выражения(банкомат по имени я нахожу)

 определить есть ли связь буква Y или N(проанализировать текст на несколько строк ниже <DIV align=left><FONT size=-1>N</FONT></DIV></TD>).
Если есть(Y) то ищем другой банкомат и проверяем связь. Если Нет связи высвечиваем сообщение нету связи и дальше ищем, пока не просомтрим все банкоматы у меня не получается реализовать этот алгоритм.

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

ниже часть кода HTML которій я анализирую


<TD width="10%"><A title="Посмотреть детально" 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/detail.jsp?PSSWD3=H2605&amp;T_ID=ATM00071"><FONT 
            size=-1>ATM00071 </FONT></A></TD>
          <TD width="12%" bgColor=#ffff00><FONT size=-1>Внимание:есть 
            ошибки</FONT></TD>
          <TD width="19%"><FONT size=-1>...</FONT></TD>
          <TD width="3%" bgColor=#80ff80>
            <DIV align=left><FONT size=-1>N</FONT></DIV></TD>
          <TD width="12%"><FONT size=-1><A 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/last_dsps.jsp?PSSWD=122042">Последняя 
            выдача </A></FONT></TD>
          <TD width="8%" bgColor=#ffff00>
            <DIV align=center><FONT size=-1>2</FONT></DIV></TD></TR>
        <TR bgColor=#ffffff>
          <TD width="10%"><A title="Посмотреть детально" 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/detail.jsp?PSSWD3=H2605&amp;T_ID=ATM00072"><FONT 
            size=-1>ATM00072 </FONT></A></TD>
          <TD width="12%" bgColor=#ffffff><FONT size=-1>Внимание</FONT></TD>
          <TD width="19%"><FONT size=-1>...</FONT></TD>
          <TD width="3%" bgColor=#80ff80>
            <DIV align=left><FONT size=-1>Y</FONT></DIV></TD>
          <TD width="12%"><FONT size=-1><A 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/last_dsps.jsp?PSSWD=122048">Последняя 
            выдача </A></FONT></TD>
          <TD width="8%" bgColor=#80ff80>
            <DIV align=center><FONT size=-1>0</FONT></DIV></TD></TR>
        <TR bgColor=#ffffff>
          <TD width="10%"><A title="Посмотреть детально" 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/detail.jsp?PSSWD3=H2605&amp;T_ID=ATM00073"><FONT 


  
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1504 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.