Питхон

Рашчлањивање ХТМЛ-а помоћу Питхона

Рашчлањивање ХТМЛ-а помоћу Питхона
Рашчлањивање ХТМЛ-а један је од најчешћих задатака који се данас обавља за прикупљање информација са веб локација и њихово ископавање у разне сврхе, попут утврђивања ценовних перформанси производа током времена, прегледа књиге на веб локацији и још много тога. У Питхону постоји много библиотека попут БеаутифулСоуп која апстрахује толико болних тачака приликом рашчлањивања ХТМЛ-а, али вреди знати како те библиотеке заправо раде испод тог слоја апстракције.

У овој лекцији то је оно што намеравамо да урадимо. Открићемо како се вредности различитих ХТМЛ тагова могу издвојити и такође заменити подразумевану функционалност овог модула да бисмо додали неку своју логику. То ћемо урадити помоћу ХТМЛПарсер класе у Питхон-у у хтмл.парсер модул. Да видимо код на делу.

Гледајући класу ХТМЛПарсер

Да бисмо рашчланили ХТМЛ текст у Питхону, можемо користити ХТМЛПарсер разред у хтмл.парсер модул. Погледајмо дефиницију класе за ХТМЛПарсер класа:

класе хтмл.парсер.ХТМЛПарсер (*, цонверт_цхаррефс = Тачно)

Тхе цонверт_цхаррефс поље, ако је постављено на Тачно, претвориће све референце на знакове у њихове еквиваленте у Уницодеу. Само скрипта / стил елементи се не претварају. Сада ћемо покушати да разумемо сваку функцију за ову класу како бисмо боље разумели шта свака функција ради.

Подкласирање класе ХТМЛПарсер

У овом одељку подкласираћемо класу ХТМЛПарсер и погледаћемо неке функције које се позивају када се ХТМЛ подаци проследе инстанци класе. Напишимо једноставну скрипту која ради све ово:

фром хтмл.парсер импорт ХТМЛПарсер
класа ЛинукХТМЛПарсер (ХТМЛПарсер):
деф хандле_старттаг (селф, таг, аттрс):
принт ("Пронађена је почетна ознака:", ознака)
деф хандле_ендтаг (селф, таг):
принт ("Наишла је крајња ознака:", ознака)
деф хандле_дата (селф, дата):
принт ("Подаци пронађени:", подаци)
парсер = ЛинукХТМЛПарсер ()
парсер.напајање("
'

Питхон ХТМЛ модул за рашчлањивање


')

Ево шта добијамо овом командом:

Питхон ХТМЛПарсер поткласа

ХТМЛПарсер функције

У овом одељку ћемо радити са различитим функцијама класе ХТМЛПарсер и размотрити функционалност сваке од њих:

фром хтмл.парсер импорт ХТМЛПарсер
фром хтмл.ентитети увозе наме2цодепоинт
класа ЛинукХинт_Парсе (ХТМЛПарсер):
деф хандле_старттаг (селф, таг, аттрс):
принт ("Старт таг:", ознака)
за аттр у аттрс:
испис ("аттр:", аттр)
деф хандле_ендтаг (селф, таг):
принт ("Енд таг:", таг)
деф хандле_дата (селф, дата):
принт ("Подаци:", подаци)
деф хандле_цоммент (селф, дата):
испис ("Коментар:", подаци)
деф хандле_ентитиреф (селф, име):
ц = цхр (наме2цодепоинт [име])
принт ("Именовани ент:", ц)
деф хандле_цхарреф (селф, име):
ако име.стартвитх ('к'):
ц = цхр (инт (име [1:], 16))
иначе:
ц = цхр (инт (име))
принт ("Нум ент:", ц)
деф хандле_децл (селф, подаци):
испис ("Децл:", подаци)
парсер = ЛинукХинт_Парсе ()

Уз разне позиве, дозволимо да овој инстанци доставимо одвојене ХТМЛ податке и да видимо какав излаз ови позиви генеришу. Започећемо са једноставним ДОКТИП низ:

парсер.напајање(''"хттп: // ввв.в3.орг / ТР / хтмл4 / стриктно.дтд "> ')

Ево шта добијамо овим позивом:

ДОЦТИПЕ стринг

Покушајмо сада са сликовном ознаком и погледајте које податке она издваја:

парсер.напајање('Питхон лого')

Ево шта добијамо овим позивом:

Ознака слике ХТМЛПарсер

Затим, хајде да покушамо како се таг скрипте понаша са Питхон функцијама:

парсер.напајање('')
парсер.напајање('')
парсер.феед ('# питхон цолор: греен')

Ево шта добијамо овим позивом:

Ознака скрипте у хтмлпарсер-у

На крају, коментаре преносимо и у одељак ХТМЛПарсер:

парсер.напајање(''
'')

Ево шта добијамо овим позивом:

Рашчлањивање коментара

Закључак

У овој лекцији смо погледали како можемо да рашчланимо ХТМЛ помоћу Питхон-ове властите класе ХТМЛПарсер без икакве друге библиотеке. Код можемо лако изменити да бисмо извор ХТМЛ података променили у ХТТП клијент.

Прочитајте више постова заснованих на Питхону овде.

Како се користи ГамеЦонкуерор Цхеат Енгине у Линуку
Чланак покрива водич о коришћењу ГамеЦонкуерор варалице у Линуку. Многи корисници који играју игре на Виндовс-у често користе апликацију „Цхеат Енгине...
Најбољи емулатори играће конзоле за Линук
Овај чланак ће навести популарни софтвер за емулацију играће конзоле доступан за Линук. Емулација је слој компатибилности софтвера који опонаша хардве...
Најбољи Линук Дистрос за игре у 2021
Линук оперативни систем далеко је превалио свој изворни, једноставни изглед заснован на серверима. Овај ОС се изузетно побољшао последњих година и сад...