mfaraj57
مسؤول فريق الدريم بوكس (رحمه الله)- إنضم
- 24 أوت 2007
- المشاركات
- 10.037
- مستوى التفاعل
- 49.813
تحليل ال source code للموقع الاصلي II
II analysis website source code
regular expression
لتبسيط هذه العمليه نرجع الى مثالنا السابق عن الاشخاص persons
نفتحه في python idle
قمنا بتقسيم المعلومات عن الاشخاص الى بلوكات blocks وكل block يحتوي على معلومات شخص معين
نريد ان حصل الان على الاسم والمهنه job من احد البلوكات ونأخذ مثلا البلوك الثاني
نستخدم هنا ما يدعى ب regular expression وهي وسيله برمجيه لاستخلاص المعلومات
انظر الى مثالنا كيف نستخدمها
في المثال نريد ان نستخلص الاسم من معلومات الاشخاص وتكوين regular expression
نأخذ احد الاسطر المكتوب فيها الاسم
نضع مكان الاسم هذذ الرمز
(.*?)
فيصبح هكذا
الان نشكل جملة regular expression statement
لتطبيق هذه الجمله على معلومات الاشخاص والحصول على اسم الشخص في البلوك الثاني
اولا في اعلى الصفحه نستورد مكتبة regular expression بواسطة هذه الجمله
ثما نشكل جملة استخلاص الاسم من المعلومات
نطبق الكود في python idle
لاحظ نتيجة التطبيق حصلنا على اسم الشخص من البلوك الثاني
نريد ان نحصل على كل المعلومات عن الشخص في البلوك الثاني
النتيجه
للحصول على المعلومات عن كل كل الاسماء في كل البلوكات نلجأ الى ما يسمى
for statment
النتيجه معلومات كل الاشخاص
ارجو فهم وتطبيق ما ذكر مرارا لانه الاساس فس عملية استخلاص المعلومات من الموقع
نأخذ احد البلوكات الموجوده في ال source code للموقع الاصلي
نلصقه مكان معلومات الاشخاص في python idle
فيصبح هكذا الكود
اذا تمعنا في معلومات الفلم الموجوده في البلوك بالاعلى نجد ان اسم الفلم مذكور هنا
رابط الفلم
بوستر الفلم
هذه المعلومات الاساسيه التي نريدها وهناك معلومات اخرى عن التقييم والقصه سنرجئهاالى ما بعد
انظر الى الكود كيف نستخلص هذه المعلومات بمساعدة regular expression
نتيجة تطبيق هذا الكود نحصل على المعلومات الاساسيه عن الفلم الموجود في هذا البلوك
الان نطبق ما تم للحصول على كل معلومات الافلام المذكوره في الموقع
نتيجة تشفيل الكود الحصول على معلومات 26 فلم مذكوره في الصفحه الاولى
الان نعود الى ملف default.py ونطبق ما تعلمناه
لتخزين معلومات الافلام ليقرأها TSmedia فقط نضيف جملة addDir
انقل الملف المرفق الذي يحتوي على الكود الذي كتبناه الى موقعه في TSmedia بعد restart enigma
افتح الموقع في TSmedia
لترى النتيجه
مرفق ملف default.py لنقله الى
وتشغيل الاضافه
تعليق:
اعرف ان ما ورد ليس سهلا فهمه خاصة للذين لا يملكون خبرات برمجيه في لغات اخرى ولكن حاولت قدر الامكان تبسيط الشرح
ولكن باعادة قراءة الشرح والتحلي بالصبر وطول البال وتطبيق ما ذكر مرارا سيصبح الشرح سهلا ومفهوما ويزول الغموض نهائيا
يتبع.....
قراءة روابط البث لفلم معين
extracting movie streaming movie link
II analysis website source code
regular expression
لتبسيط هذه العمليه نرجع الى مثالنا السابق عن الاشخاص persons
كود:
ata='''
--method demonstate splitting data for blocks
class="person"
name="mahmoud"
job="doctor"
sex="male"
children="3"
class="person"
name="ali"
job="programmer"
sex="male"
children="4"
class="person"
name="liala"
job="secretory"
sex="female"
children="2"
'''
blocks=data.split('class="person"')
print "blocks count",len(blocks)
print "first block",blocks[0]
print "second block",blocks[1]
نفتحه في python idle
قمنا بتقسيم المعلومات عن الاشخاص الى بلوكات blocks وكل block يحتوي على معلومات شخص معين
نريد ان حصل الان على الاسم والمهنه job من احد البلوكات ونأخذ مثلا البلوك الثاني
نستخدم هنا ما يدعى ب regular expression وهي وسيله برمجيه لاستخلاص المعلومات
انظر الى مثالنا كيف نستخدمها
في المثال نريد ان نستخلص الاسم من معلومات الاشخاص وتكوين regular expression
نأخذ احد الاسطر المكتوب فيها الاسم
كود:
name="mahmoud"
(.*?)
فيصبح هكذا
كود:
name="(.*?)"
كود:
regx='''name="(.*?)"'''
لتطبيق هذه الجمله على معلومات الاشخاص والحصول على اسم الشخص في البلوك الثاني
اولا في اعلى الصفحه نستورد مكتبة regular expression بواسطة هذه الجمله
كود:
import re
ثما نشكل جملة استخلاص الاسم من المعلومات
كود:
name=re.findall(regx,blocks[1], re.M|re.I)[0]
نطبق الكود في python idle
كود:
import re
data='''
--method demonstate splitting data for blocks
class="person"
name="mahmoud"
job="doctor"
sex="male"
children="3"
class="person"
name="ali"
job="programmer"
sex="male"
children="4"
class="person"
name="liala"
job="secretory"
sex="female"
children="2"
'''
blocks=data.split('class="person"')
print "blocks count",len(blocks)
print "first block",blocks[0]
print "second block",blocks[1]
################extract name and job from data-second block
###regx='''name="mahmoud"
regx='''name="(.*?)"'''
name=re.findall(regx,blocks[1], re.M|re.I)[0]
print "***********************************"
print "name:" +name
لاحظ نتيجة التطبيق حصلنا على اسم الشخص من البلوك الثاني
نريد ان نحصل على كل المعلومات عن الشخص في البلوك الثاني
كود:
import re
data='''
--method demonstate splitting data for blocks
class="person"
name="mahmoud"
job="doctor"
sex="male"
children="3"
class="person"
name="ali"
job="programmer"
sex="male"
children="4"
class="person"
name="liala"
job="secretory"
sex="female"
children="2"
'''
blocks=data.split('class="person"')
print "blocks count",len(blocks)
print "first block",blocks[0]
print "second block",blocks[1]
################extract name and job from data-second block
###regx='''name="mahmoud"
regx='''name="(.*?)"'''
name=re.findall(regx,blocks[1], re.M|re.I)[0]
regx='''job="(.*?)"'''
job=re.findall(regx,blocks[1], re.M|re.I)[0]
regx='''sex="(.*?)"'''
sex=re.findall(regx,blocks[1], re.M|re.I)[0]
regx='''children="(.*?)"'''
children=re.findall(regx,blocks[1], re.M|re.I)[0]
print "***********************************"
print "name:" +name
print "job:" +job
print "sex:" +sex
print "chidren:" +children
النتيجه
للحصول على المعلومات عن كل كل الاسماء في كل البلوكات نلجأ الى ما يسمى
for statment
كود:
import re
data='''
--method demonstate splitting data for blocks
class="person"
name="mahmoud"
job="doctor"
sex="male"
children="3"
class="person"
name="ali"
job="programmer"
sex="male"
children="4"
class="person"
name="liala"
job="secretory"
sex="female"
children="2"
'''
blocks=data.split('class="person"')
print "blocks count",len(blocks)
print "first block",blocks[0]
print "second block",blocks[1]
################extract name and job from data-second block
###regx='''name="mahmoud"
i=0
for block in blocks:
i=i+1
if i==1:##first block usually does not have any data so ask code to continue to secod block
continue
regx='''name="(.*?)"'''
name=re.findall(regx,block, re.M|re.I)[0]
regx='''job="(.*?)"'''
job=re.findall(regx,block, re.M|re.I)[0]
regx='''sex="(.*?)"'''
sex=re.findall(regx,block, re.M|re.I)[0]
regx='''children="(.*?)"'''
children=re.findall(regx,block, re.M|re.I)[0]
print "***********************************"
print "name:" +name
print "job:" +job
print "sex:" +sex
print "chidren:" +children
النتيجه معلومات كل الاشخاص
ارجو فهم وتطبيق ما ذكر مرارا لانه الاساس فس عملية استخلاص المعلومات من الموقع
نأخذ احد البلوكات الموجوده في ال source code للموقع الاصلي
كود:
<div class="poster">
<a href="https://www.moviflex.net/movies/the-last-boy/"><img src="https://cdn.moviflex.net/wp-content/uploads/2019/01/ygUsgb6WSTZ4iyZJXpjswgngqBY-185x278.jpg" alt="The Last Boy"></a>
<div class="rating"><span class="icon-star2"></span> 8</div>
<span class="quality">720p</span> </div>
<div class="data">
<h3>
<a href="https://www.moviflex.net/movies/the-last-boy/">The Last Boy</a>
</h3>
<span>2019</span>
</div>
<div class="animation-1 dtinfo">
<div class="title">
<i class="dt-movies"></i>
The Last Boy </div>
<div class="texto">The world at an end, a dying mother sends her young son on a quest to find the place that grants wishes.
مشاهدة فيلم الدراما والخيال العلمي The Last Boy 2019 <div class="degradado"></div></div>
<div class="rating">
<div class="datareviews">
<div class="datarating">
<span class="rating-stars-a">
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
</span>
<span class="rating-stars-b" style="width: 80%;">
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
</span>
</div>
<div class="rating_right">
<span class="rating-value">8</span>
<b>/1</b>
</div>
</div>
</div>
</div>
</article>
نلصقه مكان معلومات الاشخاص في python idle
فيصبح هكذا الكود
كود:
import re
data='''
<div class="poster">
<a href="https://www.moviflex.net/movies/the-last-boy/"><img src="https://cdn.moviflex.net/wp-content/uploads/2019/01/ygUsgb6WSTZ4iyZJXpjswgngqBY-185x278.jpg" alt="The Last Boy"></a>
<div class="rating"><span class="icon-star2"></span> 8</div>
<span class="quality">720p</span> </div>
<div class="data">
<h3>
<a href="https://www.moviflex.net/movies/the-last-boy/">The Last Boy</a>
</h3>
<span>2019</span>
</div>
<div class="animation-1 dtinfo">
<div class="title">
<i class="dt-movies"></i>
The Last Boy </div>
<div class="texto">The world at an end, a dying mother sends her young son on a quest to find the place that grants wishes.
مشاهدة فيلم الدراما والخيال العلمي The Last Boy 2019 <div class="degradado"></div></div>
<div class="rating">
<div class="datareviews">
<div class="datarating">
<span class="rating-stars-a">
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
</span>
<span class="rating-stars-b" style="width: 80%;">
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
</span>
</div>
<div class="rating_right">
<span class="rating-value">8</span>
<b>/1</b>
</div>
</div>
</div>
</div>
</article>
'''
كود:
alt="The Last Boy"
كود:
href="https://www.moviflex.net/movies/the-last-boy/"
كود:
src="https://cdn.moviflex.net/wp-content/uploads/2019/01/ygUsgb6WSTZ4iyZJXpjswgngqBY-185x278.jpg"
هذه المعلومات الاساسيه التي نريدها وهناك معلومات اخرى عن التقييم والقصه سنرجئهاالى ما بعد
انظر الى الكود كيف نستخلص هذه المعلومات بمساعدة regular expression
كود:
# -*- coding: utf-8 -*-
import re
data='''
<div class="poster">
<a href="https://www.moviflex.net/movies/the-last-boy/"><img src="https://cdn.moviflex.net/wp-content/uploads/2019/01/ygUsgb6WSTZ4iyZJXpjswgngqBY-185x278.jpg" alt="The Last Boy"></a>
<div class="rating"><span class="icon-star2"></span> 8</div>
<span class="quality">720p</span> </div>
<div class="data">
<h3>
<a href="https://www.moviflex.net/movies/the-last-boy/">The Last Boy</a>
</h3>
<span>2019</span>
</div>
<div class="animation-1 dtinfo">
<div class="title">
<i class="dt-movies"></i>
The Last Boy </div>
<div class="texto">The world at an end, a dying mother sends her young son on a quest to find the place that grants wishes.
مشاهدة فيلم الدراما والخيال العلمي The Last Boy 2019 <div class="degradado"></div></div>
<div class="rating">
<div class="datareviews">
<div class="datarating">
<span class="rating-stars-a">
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
</span>
<span class="rating-stars-b" style="width: 80%;">
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
<i class="icon-star2"></i>
</span>
</div>
<div class="rating_right">
<span class="rating-value">8</span>
<b>/1</b>
</div>
</div>
</div>
</div>
</article>
'''
regx='''alt="(.*?)"'''###title of the movie
title=re.findall(regx,data, re.M|re.I)[0]
regx='''href="(.*?)"'''##link for movie
href=re.findall(regx,data, re.M|re.I)[0]
regx='''src="(.*?)"'''###image of the movie
image=re.findall(regx,data, re.M|re.I)[0]
print "***********************************"
print "title:" +title
print "href:" +href
print "image:" +image
نتيجة تطبيق هذا الكود نحصل على المعلومات الاساسيه عن الفلم الموجود في هذا البلوك
الان نطبق ما تم للحصول على كل معلومات الافلام المذكوره في الموقع
كود:
import re
import re,urllib2
def readnet(url):
try:
import requests
session = requests.Session()
USER_AGENT = 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:30.0) Gecko/20100101 Firefox/30.0'
session.headers.update({'User-Agent': USER_AGENT})
return session.get(url, verify=False).content
except:
print "download error"
url='https://www.moviflex.net/movies/'
data=readnet(url)
##split data for blocks
blocks=data.split('class="poster">')
#print number of blocks,same as number of movies in first page in the link above
print "blocks count",len(blocks)
i=0 #counter
for block in blocks:#for loop to iterate all blocks to get movie information
i=i+1 #counter
if i==1:## if block number continue to next block,because first block does not have movie information
continue
regx='''alt="(.*?)"'''###title of the movie
title=re.findall(regx,data, re.M|re.I)[0]
regx='''href="(.*?)"'''##link for movie
href=re.findall(regx,data, re.M|re.I)[0]
regx='''src="(.*?)"'''###image of the movie
image=re.findall(regx,data, re.M|re.I)[0]
print "***********************************"
print "title:" +title
print "href:" +href
print "image:" +image
نتيجة تشفيل الكود الحصول على معلومات 26 فلم مذكوره في الصفحه الاولى
الان نعود الى ملف default.py ونطبق ما تعلمناه
كود:
def getmovies(name,url,page):##movies
data=readnet(url)
blocks=data.split('class="poster">')
#print number of blocks,same as number of movies in first page in the link above
print "blocks count",len(blocks)
i=0 #counter
for block in blocks:#for loop to iterate all blocks to get movie information
i=i+1 #counter
if i==1:## if block number continue to next block,because first block does not have movie information
continue
regx='''alt="(.*?)"'''###title of the movie
title=re.findall(regx,block, re.M|re.I)[0]
regx='''href="(.*?)"'''##link for movie
href=re.findall(regx,block, re.M|re.I)[0]
regx='''src="(.*?)"'''###image of the movie
image=re.findall(regx,bock, re.M|re.I)[0]
print "***********************************"
print "title:" +title
print "href:" +href
print "image:" +image
addDir(title,href,1,image,name,1)
انقل الملف المرفق الذي يحتوي على الكود الذي كتبناه الى موقعه في TSmedia بعد restart enigma
افتح الموقع في TSmedia
لترى النتيجه
مرفق ملف default.py لنقله الى
كود:
/usr/lib/enigma2/python/Plugins/Extensions/TSmedia/addons/arabic/moviflex/
تعليق:
اعرف ان ما ورد ليس سهلا فهمه خاصة للذين لا يملكون خبرات برمجيه في لغات اخرى ولكن حاولت قدر الامكان تبسيط الشرح
ولكن باعادة قراءة الشرح والتحلي بالصبر وطول البال وتطبيق ما ذكر مرارا سيصبح الشرح سهلا ومفهوما ويزول الغموض نهائيا
يتبع.....
قراءة روابط البث لفلم معين
extracting movie streaming movie link
المرفقات
التعديل الأخير: