هل تريد استخدام ASP لإنشاء برنامج جمع اللصوص المفضل لديك؟ بعد قراءة المقال التالي، يمكنك إنشائه بنفسك. مبدأ
يقوم برنامج التجميع في الواقع باستدعاء صفحات الويب الموجودة على مواقع الويب الأخرى من خلال مكون XMLHTTP في XML. على سبيل المثال، العديد من برامج جمع الأخبار تستدعي صفحات الويب الإخبارية الخاصة بـ Sina، ويتم استبدال بعض HTML فيها، كما تتم تصفية الإعلانات. تتمثل مزايا استخدام برنامج التجميع في: عدم الحاجة إلى صيانة موقع الويب، لأن البيانات الموجودة في برنامج التجميع تأتي من مواقع ويب أخرى، وسيتم تحديثها مع تحديث موقع الويب؛ ويمكنه حفظ موارد الخادم بشكل عام يحتوي برنامج التجميع على عدد قليل من الملفات فقط، وكل محتوى الويب هو من مواقع ويب أخرى. العيوب هي: عدم الاستقرار، إذا حدث خطأ في موقع الويب المستهدف، فسوف يتعطل البرنامج أيضًا، وإذا تمت ترقية موقع الويب المستهدف وصيانته، فسيحتاج برنامج التجميع أيضًا إلى التعديل وفقًا لذلك، لأنه عبارة عن مكالمة عن بعد؛ السرعة تعادل سرعة قراءة البيانات على الخادم المحلي، وهي بالتأكيد أبطأ من ذلك.
1. الحالات
فيما يلي شرح مختصر لتطبيق XMLHTTP في ASP.
انسخ رمز الكود كما يلي:
<%
'الوظائف شائعة الاستخدام
'1. أدخل عنوان URL لصفحة الويب المستهدفة، وتكون قيمة الإرجاع getHTTPage هي رمز html لصفحة الويب المستهدفة.
وظيفة getHTTPage(url)
dimHttp
تعيين Http=server.createobject(MSXML2.XMLHTTP)
Http.open الحصول على، URL، خطأ
المتشعب.إرسال ()
إذا Http.readystate<>4 ثم
وظيفة الخروج
نهاية إذا
getHTTPPage=bytesToBstr(Http.responseBody,GB2312)
تعيين http=لا شيء
إذا كان err.number<>0 ثم err.Clear
وظيفة النهاية
'2. تحويل Ranma. استخدم xmlhttp مباشرة للاتصال بصفحات الويب ذات الأحرف الصينية. ما ستحصل عليه هو Ranma. يمكنك تحويله من خلال مكون adodb.stream.
الدالة BytesToBstr(body)
objstream خافت
تعيين objstream = Server.CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.اكتب النص
objstream.Position = 0
objstream.Type = 2
objstream.Charset = GB2312 'تحويل ترميز UTF-8 الافتراضي الأصلي إلى ترميز GB2312. وإلا، فإن استخدام مكون XMLHTTP مباشرة لاستدعاء صفحة ويب بأحرف صينية سيؤدي إلى تعليمات برمجية مشوهة.
BytesToBstr = objstream.ReadText
objstream.Close
تعيين objstream = لا شيء
وظيفة النهاية
'حاول استدعاء محتوى HTML الخاص بـ http://www.vevb.com
عنوان خافت، أتش تي أم أل
URL=http://www.vevb.com;
أتش تي أم أل = getHTTPage(Url)
الاستجابة.اكتب أتش تي أم أل
%>
2. العديد من الوظائف شائعة الاستخدام
(1) الدالة InStr
يصف
إرجاع الموضع الذي يظهر فيه حرف معين (السلسلة 2) لأول مرة في سلسلة أخرى (السلسلة 1).
قواعد اللغة
إنستر (سلسلة 1، سلسلة 2)
على سبيل المثال:
خافت SearchString، SearchChar
SearchString =http://www.vevb.com 'السلسلة المطلوب البحث عنها.
SearchChar = jb51 'ابحث عن jb51.
MyBK = Instr(SearchString, SearchChar) 'إرجاع 8
'إرجاع 0 إذا لم يتم العثور عليه، على سبيل المثال:
SearchChar = BK
MyBK = Instr(SearchString, SearchChar) 'إرجاع 0
(2) منتصف الوظيفة
يصف
إرجاع العدد المحدد من الأحرف من سلسلة.
قواعد اللغة
منتصف (سلسلة، بداية، أكثر)
على سبيل المثال:
خافت MyBK
MyBK = Mid (تصميم BK (www.google) الخاص بنا، 7، 12) 'اعترض السلسلة المكونة من 12 حرفًا بعد الحرف السابع من تصميم BK (www.google) الخاص بنا
"في هذا الوقت، أصبحت قيمة MyBK هي www.google
(3) استبدال الوظيفة
خافت SearchString، SearchChar
SearchString = تصميم BK الخاص بنا عبارة عن سلسلة مواقع ويب لموارد بناء مواقع الويب التي سيتم البحث فيها.
SearchString =Replace(SearchString,BK design,Www.google)
'في هذا الوقت، أصبحت قيمة SearchString بمثابة موقع Www.google الخاص بنا وهو موقع ويب لموارد إنشاء مواقع الويب
3. اعتراض كود HTML للمنطقة المحددة
على سبيل المثال، أريد فقط الحصول على جزء النص الموجود بين <td> و</td> في كود HTML التالي:
<أتش تي أم أل>
<title>(www.google)محرك بحث جوجل</title>
<الجسم>
<الجدول>
<tr><td></td></tr>
<tr><td id=Content>BK (www.google) محرك بحث Google هو موقع يحتوي على العديد من الموارد...</td></tr>
</الجدول>
</الجسم>
</html>
<%
…
خافت StrBK، ابدأ، انتهى، RsBK
StrBK=getHTTPPage (عنوان صفحة الويب)
start=Instr(StrBK,<td id=Content>) 'الوظيفة هنا هي الحصول على موضع بداية السلسلة. سيسأل شخص ما هنا: الكود الأصلي هو <td id=Content>، لماذا تتصل بـ <td id=Content> هنا؟ الإجابة: في asp (على وجه الدقة، يتم تمثيله بعلامتي اقتباس مزدوجتين في VBscript A double اقتباس، لأن الاقتباس المزدوج هو حرف حساس للبرنامج).
over=Instr(StrBK,…</td></tr>)'الوظيفة هنا هي الحصول على موضع نهاية السلسلة.
'سيسأل شخص ما مرة أخرى هنا:( : لماذا توجد ثلاث نقاط إضافية أمام كود HTML الذي يستدعيه البرنامج...؟ الإجابة: نصيحة: يوجد أيضًا </td></tr> في الأعلى إذا كنت تستخدم </td></ tr> لتحديد الموقع، فسيعتبر البرنامج عن طريق الخطأ </td></tr> في السطر أعلاه بمثابة نهاية السلسلة التي سيتم الحصول عليها.
RsBK=mid(StrBK,start,over-start) 'الوظيفة هنا هي استخراج السلسلة بين حرف البداية والحرف الزائد في StrBK. لقد تحدثت أيضًا عن الدالة المتوسطة في القسم السابق؛ وهي حساب المسافة بين موضع البداية وموضع النهاية، وهو عدد الأحرف.
Response.write(RsBK) 'أخيرًا قم بإخراج المحتوى الذي حصل عليه البرنامج
%>
لا تفرح كثيرا عند تشغيله ستجد أن هناك خطأ في كود html الخاص بالصفحة لماذا؟ لأن كود html الذي تحصل عليه هو:
<td id=Content>BK (www.google) محرك بحث جوجل هو موقع يحتوي على العديد من الموارد...
هل رأيت ذلك؟ هناك كود HTML غير مكتمل! ما يجب القيام به؟ تحصل العبارة start=Instr(StrBK,<td id=Content>) على رقم موضع <td id=Content> في StrBK الآن يمكننا إضافة 17 بعد بيان البرنامج، ثم يشير البرنامج إلى موضع الحرف بعد ذلك <معرف td=المحتوى>.
حسنًا، سيتغير البرنامج إلى هذا:
<%
…
خافت StrBK، ابدأ، انتهى، RsBK
StrBK=getHTTPPage (عنوان صفحة الويب)
start=Instr(StrBK,<td id=Content>) + 17
over=Instr(StrBK,…</td></tr>) 'هنا يمكنك أيضًا طرح سبعة (-7) لإزالة 3 نقاط
RsBK = منتصف (StrBK، بدء، الإفراط في البداية)
الاستجابة.الكتابة (RsBK)
%>
لا بأس، يمكننا سرقة ما نريد وعرضه على صفحتنا الخاصة، هاها~
4. حذف أو تعديل الأحرف التي تم الحصول عليها
استبدل BK(www.google) في RsBK بـ BK:
RsBK=replace(RsBK,BK(www.google),BK)
أو قم بحذف (www.google) مباشرة:
RsBK=replace(RsBK,(www.google))
حسنًا، أصبح الآن RsBK: محرك بحث Google BK هو موقع يحتوي على العديد من الموارد...
لكن في الواقع، قد لا تكون وظيفة الاستبدال مناسبة لبعض المواقف، على سبيل المثال، نريد إزالة جميع الاتصالات في سلسلة معينة، وقد تتضمن الاتصالات أنواعًا عديدة، ولا يمكن استخدام نوع واحد منها إلا وظيفة استبدال أخرى مقابلة لتحل محلها؟
ولكن يمكنك استخدام التعبيرات العادية للقيام بهذه المهمة بدلاً من ذلك. لن أخوض في التفاصيل هنا.
(1) كيفية معالجة تحويل صفحة موقع الطرف الآخر إلى موقع ويب خاص بنا؟
الجواب هو: استخدام وظيفة الاستبدال وتمرير معلمات الصفحة.
على سبيل المثال، تحتوي صفحة الطرف الآخر على رمز تحويل الصفحة: <a href=2.htm>الصفحة التالية</a>. يمكننا أولاً استخدام المحتوى المذكور أعلاه للحصول على هذه السلسلة، ثم استخدام وظيفة الاستبدال: RsBK= استبدال (RsBK،<a href=،<a href=page.asp?Url=)
ثم احصل على قيمة معلمة URL في برنامج page.asp، وأخيرًا استخدم تقنية التجميع للحصول على المحتوى الذي تريده في الصفحة التالية.
(2) كيفية تخزين المحتوى الذي تم الحصول عليه في قاعدة البيانات
ونظرًا لضيق المساحة، سأذكرها هنا بإيجاز.
انها في الواقع بسيطة جدا:
معالجة المحتوى المسروق لمنع حدوث أخطاء في إدخال SQL عند الكتابة إلى قاعدة البيانات، على سبيل المثال: استبدال(String,','')
ثم قم بتنفيذ أمر sql لإدراجه في قاعدة البيانات وسيكون الأمر على ما يرام ~
ما سبق هو مجرد بعض التطبيقات الأساسية لمكون XMLHTTP، في الواقع، يمكنه أيضًا تنفيذ العديد من الوظائف، مثل حفظ الصور عن بعد إلى الخادم المحلي، واستخدام مكون adodb.stream لحفظ البيانات المكتسبة في قاعدة البيانات. تحتوي المجموعة على مجموعة واسعة من الوظائف والاستخدامات.