NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Попытка:
import HTMLParser
В Python 3.0 модуль HTMLParser был переименован к html.parser, который можно проверить об этом здесь
Python 3.0
import html.parser
Python 2.2 и выше
import HTMLParser
Вы, вероятно, действительно хотите BeautifulSoup, проверяете ссылку на пример.
Но в любом случае
>>> import HTMLParser
>>> h = HTMLParser.HTMLParser()
>>> h.feed('<html></html>')
>>> h.get_starttag_text()
'<html>'
>>> h.close()
Можно интересоваться lxml. Это - отдельный пакет и имеет компоненты C, но является самым быстрым. Это имеет также очень хороший API, позволяя Вам легко перечислить ссылки в документах HTML или формы списка, санировать HTML, и т.д. Это также имеет возможности проанализировать не правильно построенный HTML (это настраивается).
Я рекомендовал бы использовать Красивый модуль Супа вместо этого, и он имеет хорошую документацию.
Для реального мира обработка HTML я рекомендовал бы BeautifulSoup. Это является большим и устраняет большую часть боли. Установка легка.
Необходимо также посмотреть на html5lib для Python, поскольку он пытается проанализировать HTML способом, так очень напоминает то, что веб-браузеры делают, особенно при контакте с недопустимым HTML (который составляет больше чем 90% сегодняшней сети).
Я не рекомендую BeautifulSoup, если Вы хотите скорость. lxml очень, намного быстрее, и можно отступить в БАКАЛАВРЕ НАУК lxml soupparser, если синтаксический анализатор по умолчанию не работает.
Существует ссылка на пример в нижней части (http://docs.python.org/2/library/htmlparser.html), это просто не работает с исходным Python или python3. Это должен быть python2, как это говорит относительно вершины.