الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

قراءة عنوان موقع ما بدون رؤية السورس

مغلق
بدأه محمد القربي في 7 ديسمبر 2004 · 3 رد · 397 مشاهدة · في منتدى تصميم صفحات الويب
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أمضيتُ ما يقارب الخمس ساعات و أنا أبحث عن كيفية قراءة عنوان صفحة ما (title) من قسم الـ head في الـ html بدون فتح الـ السورس كود. و هذه تفيد في عدة نواح مثلاً: بناء محرك بحث أو كما في المثال التالي... و ذلك من خلال لغة الـ ASP

البعض قد يستخدم الـ document.title من خلال الجافاسكريبت و لكنها ليست فعالة لغرضنا هنا

على كل حال، هذا المثال هو أفضل ماوجدت و على الرغم من أنه قد يأخذ وقتاً طويلاً في التنفيذ فيجعل فائدته قليلة نوعاً لكنني أحببت مشاركة الفكرة

و المثال هو هنا:

http://www.asp101.com/wrox/17970704.asp

هو كالتالي:

- يوجد قاعدة بيانات فيها مواقع الكترونية URLs

- يقرأ هذه الـ urls ثم يقوم بقراءة محتواها

- يقرأ في كل صفحة مابين الـ tiltle meta tags

<title> ... </title>

و إذا لم يجد الـ title يظهر أن الصفحة غير معرفة undefined

- يعرض المواقع الموجودة و تحت كل موقع عنوانه (title)

- يبحث في محتوى الموقع إذا كان يحوي كلمات معينة (سيئة مثلاً) يقوم بالتنبيه لها

- يعرض مجموع المواقع التي تحوي تنبيه

كود الااتصال مع قاعدة البيانات و تحديد وقت استنفاد التنفيذ
<%@ LANGUAGE=VBSCRIPT %>
<!-- #include virtual="/connect/linksdb.inc" -->
<% Server.ScriptTimeOut = 2400  %>
<% seekTitleTimeout = 45  %> 
...
...

ثم يتم فتح الاتصال مع قاعدة البيانات و استخراج المواقع و طباعتها من خلال Do while

(في المثال تم افتراض المتغير strURL لكل موقع)

المشكلة الحقيقة هي الآن، استخراج محتويات كل موقع (صفحة) أو ما يسمى:

Fetching the Page with the ASP.HTTP Component

(مع ملاحظة أن ليس جميع شركات الاستضافة تدعم الـ ASP.HTTP)

...
strResult = "" هنا سنضع محتوى الصفحة
strTitle = "" هنا عنوان الصفحة
Set oHTTP = Server.CreateObject("ASP.HTTP")
oHTTP.Url = strURL
oHTTP.TimeOut = seekTitleTimeout وقت الاستنفاد
strResult = oHTTP.GetURL
Set oHTTP = Nothing 
If Len(strResult) = 0 Then
Response.Write "<B>>> لا يوجد رد من الموقع في " _
& seekTitleTimeout & "seconds.</B><P>" & CRLF
intNumPages = intNumPages + 1 لزيادة المجموع الخاص بالمواقع السيئة
Else
اذا كان محتوى الصفحة يحوى التالي فهناك خطأ ما بعد الأخذ باعتبارات الأحرف الصغيرة في الانكليزية
If Instr(LCase(strResult), "error") > 0 _
Or Instr(LCase(strResult), "invalid") > 0 Then 
Response.Write "<B>>> Request returned an error.</B><P>" & CRLF
intNumPages = intNumPages + 1 لزيادة المجموع الخاص بالمواقع السيئة
Else سنقوم الآن باستخراج العنوان
...
...

...
'استخراج المحتويات بين نصي
'<title></title>
'بعد الأخذ اعتبارات السمول لترز في الأحرف الانكليزية

intStart = Instr(UCase(strResult), "<TITLE>") + 7
intFinish = Instr(UCase(strResult), "</TITLE>")

'في حال لم تضع هذه سيشر إلى خطأ في MID
If (intStart > 0) And (intFinish > intStart) Then
strTitle = Trim(Mid(strResult, intStart, intFinish - intStart))
End If

إذا لم يجد عنوان
If Len(strTitle) = 0 Then strTitle = "Untitled page at:" 

البحث عن كلمات غير مرغوب فيها في المحتوى
strResult = LCase(strResult)
If InStr(strResult, " sex ") Or InStr(strResult, " adult ") Or _
InStr(strResult, " porn ") Or InStr(strResult, " xxx ") Or _
InStr(strResult, " nude ") Or InStr(strResult, " sexy ") Then
intNumPages = intNumPages + 1 لزيادة المجموع الخاص بالمواقع السيئة
Response.Write "<B>>> Content Warning!</B>   "
End If

كتابة عنوان الصفحة
Response.Write "Page title is: " & strTitle & "<P>" & CRLF
strResult = ""
End If
End If
...

و هذه الطريقة قد تكون مفيدة في حالات اخرى مثلاً:

استخراج الموجود بين نصي: <H1> ... </H1>

وهكذا...

أحببتُ المشاركة في شئ قد أتعبني و أخذ من وقتي الكثير حتى وجدته :)

Mohamad Al-Karbi

www.mkarbi.me

#3

على الرحب و السعة، آمل ان نستفيد منه :)

Mohamad Al-Karbi

www.mkarbi.me

#4

شكراً لك أخوي محمد... وجزاك الله كل خير...

ولي عودة على الموضوع إن شاء الله...

ملاحظة هامة: يقوم بعض الإخوان والأخوات بمراسلتي برسالة خاصة على البريد الإلكتروني بشأن تقييم مواقعهم الشخصية وأنا إذ أشكرهم على ثقتهم فإني أود منهم طرح مواقعهم التي يرغبون بتقييمها في المنتدى ليتسنى لجميع الأعضاء مشاهدتها وتقيمها.. وعلى كل حال... رأي شخصين أفضل من رأي شخص واحد.. ورأي ثلاثة أشخاص أفضل من رأي إثنان..

توقيع: "الفرق بين الفشل والنجاح هو إنجاز الأعمال بشكل صحيح تقريباً وإنجازها بشكل صحيح تماماً"

توقيع: "من قال لك أنه عالم فأعلم أنه ما زال جاهل، ومن قال لك أنك عالم فأعلمه بأنك ما زلت جاهل"

توقيع: "اللهم بارك له في وقته"

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…