Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
При использовании Python бросьте хороший взгляд на Красивый Суп (http://crummy.com/software/BeautifulSoup).
Чрезвычайно способная библиотека, делает очистку бриза.
Пакет Гибкости HTML Для программистов .NET является потрясающим. Это поворачивает веб-страницы в документах XML, которые могут быть запрошены с XPath.
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a@href")
{
HtmlAttribute att = link"href";
att.Value = FixLink(att);
}
doc.Save("file.htm");
Можно найти его здесь. http://www.codeplex.com/htmlagilitypack
Я думаю, что общий ответ здесь должен использовать любой язык + http библиотека + html/xpath синтаксический анализатор. Я нахожу, что с помощью рубина + hpricot дает хорошее чистое решение:
require 'rubygems'
require 'hpricot'
require 'open-uri'
sites = %w(http://www.google.com http://www.stackoverflow.com)
sites.each do |site|
doc = Hpricot(open(site))
# iterate over each div in the document (or use xpath to grab whatever you want)
(doc/"div").each do |div|
# do something with divs here
end
end
Для больше на Hpricot см. http://code.whytheluckystiff.net/hpricot/
Мне лично нравится WWW:: Механизируйте модуль Perl для этих видов задач. Это дает Вам объект, который смоделирован после типичного веб-браузера, (т.е. можно перейти по ссылкам, заполнить формы или использовать "кнопку"Назад"" вызывающими методами для нее).
Для извлечения фактического содержания Вы могли затем сцепить его до HTML:: TreeBuilder для преобразования веб-сайта Вы в настоящее время посещаете в дерево HTML:: объекты Элемента и извлечение данные Вы хотите ( look_down()
метод HTML::Element
особенно полезно).
Я лично нахожу http://github.com/shuber/curl/tree/master и http://simplehtmldom.sourceforge.net/ потрясающими для использования в моих проектах глобального поиска/очистки PHP.
Perl WWW:: Механизируйте библиотеку, превосходно для того, чтобы сделать ишачий труд взаимодействия с веб-сайтом для получения до фактической страницы, в которой Вы нуждаетесь.
Я использовал бы LWP (Libwww для Perl). Вот хорошее маленькое руководство: http://www.perl.com/pub/a/2002/08/20/perlandlwp.html
WWW:: Скребок имеет документы здесь: http://cpan.uwinnipeg.ca/htdocs/Scraper/WWW/Scraper.html Это может быть полезно как основа, Вы, вероятно, хотели бы создать свой собственный модуль, который соответствует Вашему ресторану, добывающему потребности.
LWP дал бы Вам основной поисковый робот для Вас для построения.
Какой язык Вы хотите использовать?
завихрение с awk могло бы быть всем, в чем Вы нуждаетесь.
Было много ответов, рекомендующих, чтобы Perl Механизировал, но я думаю, что Ruby Механизирует (очень похожий на версию Perl), еще лучше. Это обрабатывает некоторые вещи как формы намного более чистым способом синтаксически. Кроме того, существует несколько frontends, которые работают сверху Ruby, Механизируют, которые делают вещи еще легче.
Я рекомендовал бы BeautifulSoup. Это не является самым быстрым, но работает действительно хорошо в отношении не-отмеченности (X) страницы HTML, на которых дросселирует большинство синтаксических анализаторов.
Можно использовать опрятный, чтобы преобразовать его в XHTML и затем использовать безотносительно средств обработки XML, которые имеет в наличии предпочтительный язык.
что кто-то сказал.
используйте ЛЮБОЙ ЯЗЫК.
пока у Вас есть хорошая библиотека синтаксического анализатора и http библиотека, Вы установлены.
древовидный материал медленнее, затем просто пользуется хорошей библиотекой синтаксического анализа.