Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Regexp java или иной библиотеки для парсинга HTML

Ответить
Настройки темы
Java - Regexp java или иной библиотеки для парсинга HTML

Аватара для Flick

Пользователь


Сообщения: 146
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Flick
Дата: 25-03-2008
Описание: выпиюсчие неточности в коде ((
Здравствуйте, встала задача, написать класс , который будет парсить html страницу со, скорее всего кривым кодом ( то есть парсеры типа DOM, я так мыслю отсекаются ) ,
задача, вытянуть из документа все урлы.
но вот проблема, самым очевидным решением принял поиск по совпадению с регулярным выражением ( NB у меня опыта практически ноль )
и когда хочу пропарсить с помощью java.util.regexp - не получается составить выражение, а при помощи org.apache.oro.text.regex. получаю java.lang.ArrayIndexOutOfBoundsException,
Люди добрые не пагубите помогите найти оптимальный выход их этой ситуации...


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


import org.apache.oro.text.awk.AwkCompiler;
import org.apache.oro.text.awk.AwkMatcher;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.MatchResult;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;

public class Analyzer2 {

	public ArrayList<String> analyze(String html_body) {

		
		ArrayList<String> al = null;
		String regex = "(http://)*[w]{3}*.*[a-zA-Z0-9].+[a-zA-Z]{1,3}";

		PatternCompiler compiler = new AwkCompiler();
		Pattern pattern = null;
		try {
			pattern = compiler
					.compile(regex, AwkCompiler.CASE_INSENSITIVE_MASK);
			
		} catch (MalformedPatternException mpe) {
			mpe.printStackTrace();
		}
		AwkMatcher matcher = new AwkMatcher();
		while (matcher.contains(html_body, pattern)) {
			MatchResult result = matcher.getMatch();
			la.add(result.toString());
		}

		return al;
	}
}
подскажите что не так и как сделать что бы это барахло заработало..?

Отправлено: 21:52, 24-03-2008

 

Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Flick
берем tidy, подключаем его, кормим ему ваш не валидный HTML на выходе получаем дом объект, выдираем все ссылки.

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 11:01, 25-03-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Flick

Пользователь


Сообщения: 146
Благодарности: 1

Профиль | Отправить PM | Цитировать


Vlad Drakula,
Вот в том-то и дело, что jTidy не скушает не валидный код страницы, а задача стоит выцепить как можно больше урлов, ( а на странице урл же может выводиться скриптом, не обязательно в виде валидной html-ной ссылки ) ( я пытался заюзать и jTidy и Xerces - ничиво не вышло ). Помогите составить regex хоть на чем нибудь......awk perl java

Отправлено: 11:34, 25-03-2008 | #3


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


хотя бы так
[Hh][Tt][Tt][Pp]://[^ "']*
блоки <script> стоит исключить - там могут быть "обрывки" адресов
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:41, 25-03-2008 | #4


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Flick
1) тогда бы почему бы вам просто не использовать движок браузера?
2) не знаю как jTidy, но я использую tidy как раз чтобы делать не валидный HTML валидным, tidy конечно не со всем справляется но в большинстве случаев работает на ура.

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 12:57, 25-03-2008 | #5


Аватара для Flick

Пользователь


Сообщения: 146
Благодарности: 1

Профиль | Отправить PM | Цитировать


путь с Tidy - тернистее и длинее, сложнее,
путь с regexp'ом - , оказался быстрее проще ( в общем случае ).... всем спасибо...

Отправлено: 15:23, 25-03-2008 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Java - Regexp java или иной библиотеки для парсинга HTML

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Для чего нужны dll библиотеки или Учимся редактировать dll Ban_vam_Dam Флейм 5 31-07-2009 17:41
Подскажыте, плиз, как создать REG фаил с настройками той или иной программы??? den730 Автоматическая установка приложений 2 06-11-2006 12:03
Как в программе задать тот или иной приоритет ? XPurple Программирование и базы данных 2 22-05-2006 06:11
HTML и  JAVA редакторы Hagakure Хочу все знать 60 05-02-2002 14:35




 
Переход