Python for testers

Парсинг неправильного html c помощью стандартных библиотек Python

Written by Михаил Поляруш on . Posted in Автоматизация

Если вам приходилось работать c html и xml, то вы определенно знаете, что есть хороший и плохой html код. Что означает плохой html код? Теги могут быть незакрытые или может быть несколько рутовых элементов и т.д. Для xml эти правила обязательны, а вот для html они опциональны. Поэтому если Вы захотите распарсить такой html c помощью xml библиотеки, то вы получите разного рода ошибки, что ваш html не подходит под xml валидацию. Что делать? Я рекомендую использовать BeautifulSoup. Но если вы не можете добавить внешнюю библиотеку, что делать? Надо использовать, то что есть. Вот вы можете посмотреть пример кода, как получить текст элемента title для вашего html. В примере используете HTMLParser класс

from HTMLParser import HTMLParser 

class MyParser(HTMLParser): 
	def __init__(self, data): 
		self.title, self.is_title= None, None
		HTMLParser.__init__(self) 
		self.feed(data) 

	def handle_starttag(self, tag, attrs):
		if tag == 'title':
			self.is_title = 1 

	def handle_data(self, data): 
		if self.is_title: 
			self.title = data 
			self.is_title = 0 

if __name__ == "__main__": 

	m = MyParser(r"""
		<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
		<html><head>
		<title>404 Not Found</title>
		</head><body>
		<h1>Not Found</h1>
		<p>The requested URL was not found.</p>
		<hr>
		<address>Apache/2.2.14</address>
		</body></html>""")
	print m.title

Tags: ,

Trackback from your site.

  • Гость

    Тема невалидного html не раскрыта!

  • http://poliarush.com/ Mykhailo Poliarush

    а что вам необходимо еще показать?

Twitter лента

autotestinfo

Как продолжить тест при случайном появлении попапа? http://t.co/tGqX8PjPzD

mpoliarush

http://t.co/9879JVgl21 automates tests written with QUnit, Jasmine, Mocha with Expect.js assertions, Dojo Objective Harness, or YUI Test.

Меня комментируют

Igor Vlasuyk

|

“Продолжительность 16 часов (2 дня)”
Это то есть 2 рабочих дня надо полностью быть на тренинге?
И на каком языке программирования будет практика?

Nataliia Koval

|

Большое спасибо! С расписанием вроде разобралась.

Chmel Viktor

|

Доброго дня

Nataliia Koval

|

Подскажите пожалуйста, после регистрации на сайте pearsonvue.com, как оплатить и выбрать дату и место сдачи? Там есть адреса центров сдачи экзамена. Звонить в эти центры?

Mykhailo Poliarush

|

так и есть, ошибочка, уже поправил

Что вас интересует на этом сайте?

View Results

Loading ... Loading ...