التحليل هو تحليل وتفسير بنية المستند. قد تتضمن عملية التحليل استخراج عناصر أو سمات أو بيانات محددة من المستند والتحقق من تنسيق المستند جيدًا أثناء اتباع معايير أو قواعد محددة. يستخدم التحليل بشكل أساسي لاستخراج البيانات من صفحات الويب أو معالجة بنية صفحات الويب قبل عرضها على المستخدمين.
يوفر Go حزمًا للعمل مع المستندات ، بما في ذلك تنسيقات HTML و XML المستخدمة بشكل شائع في صفحات الويب. ال لغة البرمجة توفر الحزمة وظائف لترميز وتحليل HTML.
حزمة HTML
ال لغة البرمجة توفر الحزمة رمزًا مميزًا ومحللًا متوافقًا مع HTML5 لتحليل مستندات HTML ومعالجتها ، واجتياز شجرة التحليل ، ومعالجة بنية الشجرة. ال لغة البرمجة الحزمة هي حزمة مضمنة من مكتبة Go القياسية.
واحدة من السمات الرئيسية لبرنامج لغة البرمجة الحزمة هي ال تحليل وظيفة يمكنها تحليل مستندات HTML وإرجاع العقدة الجذرية لشجرة التحليل ، حيث يمكنك استخدام وظائف مثل FirstChild و التالي للتنقل في الشجرة واستخراج المعلومات من المستند. توفر الحزمة أيضًا ملف تحليل جزء وظيفة لتحليل أجزاء من مستندات HTML.
ال EscapeString الوظيفة مفيدة للهروب من الأحرف الخاصة في السلاسل لإدراج أكثر أمانًا في HTML ؛ يمكنك استخدام هذه الوظيفة لمنع البرمجة النصية عبر المواقع (XSS) الهجمات عن طريق تحويل الأحرف الخاصة إلى كيانات HTML المقابلة لها.
لتبدأ مع لغة البرمجة الحزمة ، يمكنك استيراد الحزمة إلى ملفات مشروع Go.
يستورد"golang.org/x/net/html"
ال لغة البرمجة الحزمة لا توفر أي وظائف لتوليد HTML. بدلاً من ذلك ، يمكنك استخدام حزمة html / template ، والتي تقدم مجموعة من الوظائف لإنشاء قوالب HTML. ال html / النموذج توفر الحزمة وظيفة نموذج. HTMLEscape لكتابة إصدارات هاربة من HTML لكاتب الردود.
ال html / النموذج الحزمة هي أيضًا جزء من المكتبة القياسية ، وإليك كيفية استيراد الحزمة.
يستورد"html / نموذج"
ال لغة البرمجة الحزمة هي حزمة القوالب الأكثر استخدامًا في النظام البيئي Go وتدعم مختلف أنواع العمليات والبيانات.
تحليل HTML في Go
ال تحليل وظيفة لغة البرمجة تساعد الحزمة في تحليل نصوص HTML والمستندات. ال تحليل تأخذ الوظيفة في io. قارئ المثال لأنه الوسيطة الأولى التي تحتوي على مستند الملف و *لغة البرمجة. العقدة المثيل ، وهو العقدة الجذرية لمستند HTML
إليك كيف يمكنك استخدام تحليل وظيفة لتحليل صفحة ويب وإرجاع جميع عناوين URL الموجودة على صفحة الويب.
يستورد (
"FMT"
"golang.org/x/net/html"
"net / http"
)funcرئيسي() {
// أرسل طلب HTTP GET إلى صفحة الويب example.com
resp ، يخطئ: = http. يحصل(" https://www.example.com")
لو يخطئ! لا شيء {
FMT. Println ("خطأ:"، يخطئ)
يعود
}
تأجيل Resp. جسم. يغلق()// استخدم حزمة html لتحليل نص الاستجابة من الطلب
doc ، يخطئ: = html. تحليل (على التوالي. جسم)
لو يخطئ! لا شيء {
FMT. Println ("خطأ:"، يخطئ)
يعود
}
// البحث عن جميع الروابط وطباعتها على صفحة الويب
فار الروابط []خيط
فار وصلة func(*لغة البرمجة. العقدة)
ارتباط = func(n * html. العقدة) {
لو ن. اكتب == html. عقدة العنصر && n. البيانات == "أ" {
ل _ ، أ: = يتراوح ن. Attr {
لو أ. مفتاح == "href" {
// يضيف إدخال ارتباط جديد عندما تتطابق السمة
الروابط = ألحق(الروابط ، أ. فال)
}
}
}// يتجاوز HTML لصفحة الويب من العقدة الفرعية الأولى
ل ج: = ن. الطفل الأول ج! = لا شيء; ج = ج. التالي
رابط (ج)
}
}
رابط (مستند)
// حلقات من خلال شريحة الروابط
ل _ ، ل: = يتراوح الروابط {
FMT. Println ("وصلة:"، ل)
}
}
ال رئيسي ترسل الوظيفة طلب HTTP GET إلى موقع الويب باستخدام يحصل وظيفة http حزمة واسترداد نص استجابة الصفحة. ال تحليل وظيفة لغة البرمجة تحلل الحزمة نص الاستجابة وتعيد مستند HTML.
ال الروابط المتغير هو شريحة السلاسل التي ستحتفظ بعناوين URL من صفحة الويب. ال وصلة تأخذ الدالة في إشارة المؤشر إلى العقدة طريقة ل لغة البرمجة الحزمة و مفتاح طريقة مثيل السمة من العقدة بإرجاع البيانات المضمنة في سمة محددة (في هذه الحالة ، href). تتجاوز الوظيفة المستند بامتداد التالي طريقة من FirstChild عقدة لطباعة كل عنوان URL على صفحة الويب. أخيرًا ، تطبع حلقة for جميع عناوين URL من ملف الروابط شريحة.
ها هي نتيجة العملية.
إنشاء HTML في Go
ال html / النموذج توفر الحزمة مجموعة من الوظائف لتحليل وتنفيذ قوالب HTML بشكل آمن وفعال. تم تصميم العبوة للاستخدام جنبًا إلى جنب مع لغة البرمجة الحزمة ، والتي توفر وظائف لتحليل ومعالجة HTML.
يمكنك إنشاء HTML للعرض من جانب الخادم بامتداد html / النموذج طَرد. يعد إنشاء HTML مفيدًا للعديد من حالات الاستخدام مثل إرسال رسائل البريد الإلكتروني وعرض الواجهة الأمامية من جانب الخادم وغير ذلك الكثير. يمكنك استخدام أنواع بيانات Go المضمنة مثل الخرائط والبنى للتفاعل ومعالجة HTML لصفحة الويب الخاصة بك.
عليك أن تفهم انتقل إلى بناء جملة HTML القوالب لتوليد HTML بنجاح باستخدام امتداد html / النموذج طَرد.
يستورد (
"html / نموذج"
"نظام التشغيل"
)يكتب صفحة على الإنترنت هيكل {
عنوان خيط
عنوان خيط
نص خيط
}funcرئيسي() {
// تحديد القالب
tmpl: = `{{.عنوان}} {{.عنوان}}
{{.نص}}
`// تحديد البيانات التي سيتم استخدامها في النموذج
الويب: = صفحة الويب {
عنوان: "نموذج الصفحة",
عنوان: "مرحبا بكم في موقع الويب الخاص بي!",
نص: "هذه هي الصفحة الرئيسية لموقع الويب الخاص بي.",
}// إنشاء قالب جديد وتحليل سلسلة القالب
t ، يخطئ: = القالب. جديد("صفحة على الإنترنت") .Parse (tmpl).
لو يخطئ! لا شيء {
ذعر(يخطئ)
}
// قم بتنفيذ القالب واكتب النتيجة إلى stdout
يخطئ = ت. نفذ (os. Stdout ، ويب)
لو يخطئ! لا شيء {
ذعر(يخطئ)
}
}
ال tmpl متغير يحمل سلسلة HTML. تستخدم سلسلة HTML بناء جملة Go Templating لتحديد عنوان الصفحة ، وملف h1 رأس وفقرة من النص. ال صفحة على الإنترنت يحدد الهيكل حقول البيانات لصفحة الويب باستخدام عنوان, عنوان، و نص مجالات.
ال تحليل طريقة جديد تقوم وظيفة حزمة القوالب بإنشاء قالب جديد وتحليله باستخدام سلسلة القالب. ال ينفذ تقوم وظيفة مثيل القالب الجديد بتنفيذ القالب بالبيانات من مثيل البنية الخاص بك وإرجاع النتيجة إلى الإخراج القياسي (في هذه الحالة ، تقوم بطباعة النتيجة إلى وحدة التحكم).
بناء تطبيقات الويب مع Go
يعد التعرف على تحليل وإنشاء HTML باستخدام Go خطوة واحدة في الاتجاه الصحيح نحو إنشاء تطبيقات ويب أكثر تعقيدًا مع Go. يمكنك استخدام أطر عمل مثل Gin و Echo وأجهزة التوجيه مثل Gorilla Mux و Chi Router لبناء جانب الخادم على الويب الخاص بك طلب.
هذه الحزم مبنية على صافي / http الحزمة (الحزمة المضمنة للتفاعل مع HTTP in Go) واستخلص تعقيدات إعداد الخوادم وأجهزة التوجيه في Go.