Thursday, September 8, 2011

HTML Parser


HTML кодыг боловсруулж тэр дундаас ямар нэгэн мэдээлэл гаргаж авах ажил надад нэлээн олон удаа тохиолдож байв. Тэрний 1 болох Андройд дээр хийсэн ТВ хөтөлбөрийн програмыг дурдаж болно. Энэ апп нь гөгө-гийн нэг хуудсан дах мэдээллийг авч боловсруулаад утасны санах ойд хадгалснаар интернетгүй үед ажиллаж чаддаг.

Нэг ийм зүйл надад тохиолдсон юм. Хэдэн сарын өмнө програм маань ажиллахаа болив. Гайхаад үзтэл нэг мэдээ оруулагч нь "&" тэмдгийг мэдээн дотроо оруулсан, тэгээд HTML хуудас маань алдаатай боллоо. Апп дээр маань энэ алдаатай XML байна гээд ажиллагаагүй таг зогсов. Тэр үед нэг хэрэглэгч маань уг нь их гоё програм байна, сүүлд ажиллахаа больчихлоо засаад өгөөч гэсэн хүсэлт ирсэн боловчиг би засаагүй. Ийм амархан эвдэрдэг юмыг би засаад яах билээ? дараа нэг нөхөр мэдээ оруулж байхдаа ENTER дарчихвал миний апп дахиад ажиллахаа больчихно.

HTML-ээс мэдээ гаргаж авах үед асуудал ийм л болдог. Тэгээд 1 жижигхэн боловсруулагч таг-нд анхаарал хандуулахгүйгээр хийх гээд оролдсон юм. Уг нь их дажгүй, код нь жижигхэн, ашиглахад амархан.

Энэ хуудсан дээрээс мэдээлэл авах гээд үзье л дээ. Цаана нь байгаа кодыг нь харалгүйгээр. Тэгвэл эхлээд би ямар нэгэн ордны нэрийг хайж олно, дараа нь ард нь байгаа арай уртхан хэмжээний текстийг хайна.

Ммм, тэгвэл телевизийн мэдээтэй хуудсыг бодъё. Эхлээд хэд дэх өдөр, ямар нэгэн телевизийн нэр хайна, тэгээд цаг, хөтөлбөрийн нэр.


Тэгвэл валютын ханшийг веб хуудсан дээрээс авъя. Эхлээд ямар нэгэн валютын нэр хайж олно, ойролцоо нь ямар нэгэн тоо байна уу? хайна, олдсонгүйэ оронд нь дахиад нэг валютын нэр олчихлоо. Энэ нэрний хажууд 2 тоо байна. Бодвол авах, зарах нь юм шиг байна.


Тэгэхлээр та миний хэлэх гээд байгаа санааг ойлгосон байх. Веб сайт дээрх үгнүүд өөр хоорондоо холбоотой. Эдгээр үгнүүдийн холбоосыг нь тодорхойлж өгч болох юм бол бид тэрхүү хуудаснаас хэрэгцээтэй мэдээллээ авч болно. Тэгээд энэ санаагаа хэрэгжүүлэхээр пайтон скрипт бичсэн юм. Энэ скрипт маань бид нарын хайж байгаа үгийг олоод цааш нь лавшруулж мөн дараа нь тааралдаж болох үгнүүдийг хайдаг. Гэхдээ та хайж байгаа үгээ REGEX-ээр тодорхойлж өгөх ёстой. Оллоо.мн-ий нүүр хуудсан дээрээс цаг агаарын мэдээ авах замыг тодорхойлъё:

Нүүр хуудаснаас нь бид нар эхлээд "Цаг агаар" гэдэг үгийг хайна. Харамсалтай нь "Цаг агаар" гэдэг үгний оронд "Цаг агаар" гэсэн бичигтэй зураг байна. Уйлаад яахав хажууханд нь "Улаанбаатар хотод" гэсэн текст байна. Доор нь "Х сарын Х" баруун талд нь урдаа тэмдэгтэй хоёр тоо байна. Regex-ээр бичвэл:

"Улаанбаатар хотод" ----> "\d{1,2} сарын \d{1,2}" ----> "[+-]\d+" ----> "[+-]\d+"

Сүүлийн хоёр тоо нь харгалзан өдөр шөнийг заана. Кодыг маань сонирхож байгаа хүн байвал энэ линкээр ороод татаж аваад "example.sh"-ийг ажиллуулаад үзээрэй.