إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

اصلاح سكربت لجلب موقع قديم من Google Cache

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • [طلب] اصلاح سكربت لجلب موقع قديم من Google Cache

    السلام عليكم ورحمة الله وبركاته

    وجدت سكربت بايثون تمكن من جلب موقع ضائع من خلال Google Cache لكن السكربت أصبحت قديمة وفيها المشكلة التالية:
    * تجلب النتائج من اول صفحة بحث فقط ولا تتابع للتي بعدها
    السكربت هي هكذا:
    كود PHP:
    #!/usr/bin/python
    import urllib
    import urllib2
    import re
    import socket
    import os
    socket
    .setdefaulttimeout(30)
    #adjust the site here
    search_term="site:ar.linux.yourwiki.net"
    def main():
        
    headers = {'User-Agent''Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4'}
        
    url "http://www.google.com/search?q="+search_term
        regex_cache 
    re.compile(r'<a href="(http://\w*\.\w*\.\w*/search\?q\=cache.*?)".*?>Cached</a>')
        
    regex_next re.compile('<a href="([^"]*?)"><span id=nn></span>Next</a>')
     
        
    #this is the directory we will save files to
        
    try:
            
    os.mkdir('files')
        
    except:
            
    pass
        counter 
    0
        pagenum 
    0
        more 
    True
        
    while(more):
            
    pagenum += 1
            
    print "PAGE "+str(pagenum)+": "+url
            req 
    urllib2.Request(urlNoneheaders)
            
    page urllib2.urlopen(req).read()
            
    matches regex_cache.findall(page)
            for 
    match in matches:
                
    counter+=1
                tmp_req 
    urllib2.Request(match.replace('&amp;','&'), Noneheaders)
                
    tmp_page urllib2.urlopen(tmp_req).read()
                print 
    counter,": "+match
                f 
    open('files/'+str(counter)+'.html','w')
                
    f.write(tmp_page)
                
    f.close()
            
    #now check if there is more pages
            
    match regex_next.search(page)
            if 
    match == None:
                
    more False
            
    else:
                
    url "http://www.google.com"+match.group(1).replace('&amp;','&')
     
    if 
    __name__=="__main__":
        
    main()
     
    # vim: ai ts=4 sts=4 et sw=4 
    في هذه السكربت غيرت السطر الذي فيه
    كود:
        regex_cache = re.compile(r'<a href="(http://\w*\.\w*\.\w*/search\?q\=cache.*?)".*?>Cached</a>')
    بحسب اصلاح في احد التعليقات بسبب مشكلة حدثت بعد تحديث في موقع جوجل وبقيت المشكلة المذكورة سابقا

    الموقع الأصلي والسكربت الأصلية هنا

    أرجو ان يساعدنا أحد في اصلاحها وشكرا

    ملاحظة: يوجد سكربت آخر باستخدام perl لكن يبدو أنها معقدة اكثر وهي هنا:
    Warrick
    https://twitter.com/damas_ua، للمحادثة المباشرة تجدني باسم az في قناة المجتمع

  • #2
    جرب هذا الحل من
    الموقع الأصلي والسكربت الأصلية هنا

    في احد التعليقات لقيت الحل وتم التطبيق ويعمل تمام
    regex_cache = re.compile(r']*href="([^"]+)[^>]+>Cached<')
    regex_next = re.compile(']*href="([^"]+)[^>]+id=pnnext')


    كود PHP:

    #!/usr/bin/python
    import urllib
    import urllib2
    import re
    import socket
    import os
    socket
    .setdefaulttimeout(30)
    #adjust the site here
    search_term="site:ar.linux.yourwiki.net"
    def main():
        
    headers = {'User-Agent''Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4'}
        
    url "http://www.google.com/search?q="+search_term
        regex_cache 
    re.compile(r']*href="([^"]+)[^>]+>Cached<')
        
    regex_next re.compile(']*href="([^"]+)[^>]+id=pnnext')
        
    #this is the directory we will save files to
        
    try:
            
    os.mkdir('files')
        
    except:
            
    pass
        counter 
    0
        pagenum 
    0
        more 
    True
        
    while(more):
            
    pagenum += 1
            
    print "PAGE "+str(pagenum)+": "+url
            req 
    urllib2.Request(urlNoneheaders)
            
    page urllib2.urlopen(req).read()
            
    matches regex_cache.findall(page)
            for 
    match in matches:
                
    counter+=1
                tmp_req 
    urllib2.Request(match.replace('&amp;','&'), Noneheaders)
                
    tmp_page urllib2.urlopen(tmp_req).read()
                print 
    counter,": "+match
                f 
    open('files/'+str(counter)+'.html','w')
                
    f.write(tmp_page)
                
    f.close()
            
    #now check if there is more pages
            
    match regex_next.search(page)
            if 
    match == None:
                
    more False
            
    else:
                
    url "http://www.google.com"+match.group(1).replace('&amp;','&')
     
    if 
    __name__=="__main__":
        
    main()
     
    # vim: ai ts=4 sts=4 et sw=4 

    تعليق


    • #3
      بسم الله الرحمن الرحيم

      @ أسامة

      أولا تغير خصائص الملف إلى execute
      ثم تكتب فى الطرفية
      python thescript.py



      فى أمان الله

      تعليق


      • #4
        المشكلة التالية هى تغيير تنسيق html إلى dokuwiki

        تعليق


        • #5
          قمت ببعض التعديلات وأرجو أن يعمل كما هو متوقع منك

          كود PHP:
          #!/usr/bin/python
          import urllib
          import urllib2
          import re
          import socket
          import os
          import sys
          socket
          .setdefaulttimeout(30)
          #adjust the site here
          search_term="site:ar.linux.yourwiki.net"

          FilesDir os.path.join(os.path.dirname(sys.argv[0]),'files')
          def main():
              
          headers = {'User-Agent''Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4'}

              
          url "http://www.google.com/search?num=100&q="+search_term
              regex_cache 
          re.compile(r'<a href="(http://\w*\.\w*\.\w*/search\?q\=cache.*?)".*?>Cached</a>')
              
          regex_next re.compile('<a href="([^"]*?)".*?>Next<'

              try:
                  
          os.mkdir('files')
              
          except:
                  
          pass

              
          if not os.path.isdir(FilesDir):
                  
          os.mkdir(FilesDir)
                  
                  
              
          counter 0
              pagenum 
          0
              more 
          True
              
          while(more):
                  
          pagenum += 1
                  
          print "PAGE "+str(pagenum)+": "+url
                  
          print '***********************************************************'
                  
          req urllib2.Request(urlNoneheaders)
                  
          page urllib2.urlopen(req).read()
                  
          matches regex_cache.findall(page)
                  for 
          match in matches:
                      
          counter+=1
                      tmp_req 
          urllib2.Request(match.replace('&amp;','&'), Noneheaders)
                      
          tmp_page urllib2.urlopen(tmp_req).read()
                      
          tmp_page.replace('http://ar.linux.yourwiki.net/wiki/','')
                      print 
          counter,": "+match
                      f 
          open(FilesDir+'/'+str(counter)+'.html','w')
                      
          f.write(tmp_page)
                      
          f.close()
                  
          #now check if there is more pages
                  
          match regex_next.search(page)
                  print 
          match
                  
          if match == None:
                      
          more False
                  
          else:
                      
          url "http://www.google.com/search?num=100&start="+str(pagenum*100)+"&q="+search_term
                      
          #url = "http://www.google.com"+match.group(1).replace('&amp;','&')
           
          if __name__=="__main__":
              
          main() 

          تعليق


          • #6
            جزاكم الله خيرا

            هذه الرسائل ظهرت بعد ان وصل للنتيجة رقم ٦٧ بعد تطبيق سكربت ايهاب:
            كود PHP:
            67 : [url]http://webcache.googleusercontent.com/search?q=cache:Kv61KRgMfYsJ:ar.linux.yourwiki.net/wiki/%D9%85%D8%B9%D8%B1%D9%81%D8%A9_%D8%A7%D9%84%D8%B9%D8%AA%D8%A7%D8%AF+site:ar.linux.yourwiki.net&amp;cd=100&amp;hl=en&amp;ct=clnk[/url]
            <_sre.SRE_Match object at 0xb7571fa0>
            PAGE 2: [url]http://www.google.com/search?num=100&start=100&q=site:ar.linux.yourwiki.net[/url]
            ***********************************************************
            Traceback (most recent call last):
              
            File "get_uri.py"line 58in <module>
                
            main()
              
            File "get_uri.py"line 42in main
                tmp_page 
            urllib2.urlopen(tmp_req).read()
              
            File "/usr/lib/python2.6/urllib2.py"line 126in urlopen
                
            return _opener.open(urldatatimeout)
              
            File "/usr/lib/python2.6/urllib2.py"line 397in open
                response 
            meth(reqresponse)
              
            File "/usr/lib/python2.6/urllib2.py"line 510in http_response
                
            'http'requestresponsecodemsghdrs)
              
            File "/usr/lib/python2.6/urllib2.py"line 429in error
                result 
            self._call_chain(*args)
              
            File "/usr/lib/python2.6/urllib2.py"line 369in _call_chain
                result 
            func(*args)
              
            File "/usr/lib/python2.6/urllib2.py"line 605in http_error_302
                
            return self.parent.open(new, timeout=req.timeout)
              
            File "/usr/lib/python2.6/urllib2.py"line 397in open
                response 
            meth(reqresponse)
              
            File "/usr/lib/python2.6/urllib2.py"line 510in http_response
                
            'http'requestresponsecodemsghdrs)
              
            File "/usr/lib/python2.6/urllib2.py"line 435in error
                
            return self._call_chain(*args)
              
            File "/usr/lib/python2.6/urllib2.py"line 369in _call_chain
                result 
            func(*args)
              
            File "/usr/lib/python2.6/urllib2.py"line 518in http_error_default
                raise HTTPError
            (req.get_full_url(), codemsghdrsfp)
            urllib2.HTTPErrorHTTP Error 503Service Unavailable 
            المشاركة الأصلية بواسطة إيهاب الجداوى مشاهدة المشاركة
            قمت ببعض التعديلات وأرجو أن يعمل كما هو متوقع منك
            https://twitter.com/damas_ua، للمحادثة المباشرة تجدني باسم az في قناة المجتمع

            تعليق


            • #7
              يبدو أننا أتعبنا جوجل

              معذرة...

              ... يبدو أن جهازك أو شبكتك ترسل طلبات بحث تلقائية. ولحماية المستخدمين، لا يمكننا معالجة طلبك الآن.
              اطلع على مساعدة Google لمعرفة المزيد من المعلومات.
              ربما يجب وضع وقت تمهّل بين الطلبات
              https://twitter.com/damas_ua، للمحادثة المباشرة تجدني باسم az في قناة المجتمع

              تعليق


              • #8
                بسم الله الرحمن الرحيم

                هذه هى نتيجة الملف

                http://www.mediafire.com/?biw1qpamoxmoijz

                تعليق


                • #9
                  المشاركة الأصلية بواسطة أحمد المالكي مشاهدة المشاركة
                  جرب هذا الحل من
                  الموقع الأصلي والسكربت الأصلية هنا

                  في احد التعليقات لقيت الحل وتم التطبيق ويعمل تمام
                  regex_cache = re.compile(r']*href="([^"]+)[^>]+>Cached<')
                  regex_next = re.compile(']*href="([^"]+)[^>]+id=pnnext')


                  كود PHP:

                  #!/usr/bin/python
                  import urllib
                  import urllib2
                  import re
                  import socket
                  import os
                  socket
                  .setdefaulttimeout(30)
                  #adjust the site here
                  search_term="site:ar.linux.yourwiki.net"
                  def main():
                      
                  headers = {'User-Agent''Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4'}
                      
                  url "http://www.google.com/search?q="+search_term
                      regex_cache 
                  re.compile(r']*href="([^"]+)[^>]+>Cached<')
                      
                  regex_next re.compile(']*href="([^"]+)[^>]+id=pnnext')
                      
                  #this is the directory we will save files to
                      
                  try:
                          
                  os.mkdir('files')
                      
                  except:
                          
                  pass
                      counter 
                  0
                      pagenum 
                  0
                      more 
                  True
                      
                  while(more):
                          
                  pagenum += 1
                          
                  print "PAGE "+str(pagenum)+": "+url
                          req 
                  urllib2.Request(urlNoneheaders)
                          
                  page urllib2.urlopen(req).read()
                          
                  matches regex_cache.findall(page)
                          for 
                  match in matches:
                              
                  counter+=1
                              tmp_req 
                  urllib2.Request(match.replace('&amp;','&'), Noneheaders)
                              
                  tmp_page urllib2.urlopen(tmp_req).read()
                              print 
                  counter,": "+match
                              f 
                  open('files/'+str(counter)+'.html','w')
                              
                  f.write(tmp_page)
                              
                  f.close()
                          
                  #now check if there is more pages
                          
                  match regex_next.search(page)
                          if 
                  match == None:
                              
                  more False
                          
                  else:
                              
                  url "http://www.google.com"+match.group(1).replace('&amp;','&')
                   
                  if 
                  __name__=="__main__":
                      
                  main()
                   
                  # vim: ai ts=4 sts=4 et sw=4 

                  ماذا عن تعديلي هل يعمل معكم

                  تعليق


                  • #10
                    نعم السكربت تعمل ووصل الآن ل ٩٠ نتيجة وتجاوز الصفحة العاشرة.

                    جزاكم الله خيرا

                    علما بأنه كانت تظهر اخطاء مثل التي في السكربت ايهاب ويبدو ان السبب كان عدم تجاوب من جوجل والله أعلم

                    المشاركة الأصلية بواسطة أحمد المالكي مشاهدة المشاركة

                    ماذا عن تعديلي هل يعمل معكم
                    https://twitter.com/damas_ua، للمحادثة المباشرة تجدني باسم az في قناة المجتمع

                    تعليق


                    • #11
                      المشكلة من خوادم جوجل تعتبر الطلب سبام لذلك توقف العملية << آسف لم أضع هذا فى الحسبان
                      إذا لم تكن توصلت لحل سأقوم بوضع مهلة بين الطلبات لتفادى المشكلة إن شاء الله << هل أفعل ؟

                      تعليق


                      • #12
                        شكرا لك، لقد عملت السكربت ونزلت ١٠٠ صفحة تقريبا، لكن إن عدلتها فسيكون ذلك افضل للآخرين إن احتاجوا لهذه السكربت فيما بعد.
                        https://twitter.com/damas_ua، للمحادثة المباشرة تجدني باسم az في قناة المجتمع

                        تعليق


                        • #13
                          الاسكريبت بعد إضافة توقيت بين الطلبات
                          كل عملية طلب وحفظ تستغرق 10 ثوانى على الأقل قبل طلب صفحة أخرى
                          كود:
                          #!/usr/bin/python
                          import urllib
                          import urllib2
                          import re
                          import socket
                          import os
                          import sys
                          import time
                          socket.setdefaulttimeout(30)
                          #adjust the site here
                          search_term="site:ar.linux.yourwiki.net"
                          
                          FilesDir = os.path.join(os.path.dirname(sys.argv[0]),'files')
                          def main():
                              headers = {'User-Agent': 'Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4'}
                          
                              url = "http://www.google.com/search?num=1&q="+search_term
                              regex_cache = re.compile(r'<a href="(http://\w*\.\w*\.\w*/search\?q\=cache.*?)".*?>Cached</a>')
                              regex_next = re.compile('<a href="([^"]*?)".*?>Next<') 
                          
                              try:
                                  os.mkdir('files')
                              except:
                                  pass
                          
                              if not os.path.isdir(FilesDir):
                                  os.mkdir(FilesDir)
                                  
                                  
                              counter = 0
                              pagenum = 0
                              more = True
                              while(more):
                                  
                                  pagenum += 1
                                  print "PAGE "+str(pagenum)+": "+url
                                  print '***********************************************************'
                                  req = urllib2.Request(url, None, headers)
                                  page = urllib2.urlopen(req).read()
                                  matches = regex_cache.findall(page)
                                  for match in matches:
                                      starttime = time.time()
                                      counter+=1
                                      tmp_req = urllib2.Request(match.replace('&amp;','&'), None, headers)
                                      tmp_page = urllib2.urlopen(tmp_req).read()
                                      tmp_page.replace('http://ar.linux.yourwiki.net/wiki/','')
                                      print counter,": "+match
                                      f = open(FilesDir+'/'+str(counter)+'.html','w')
                                      f.write(tmp_page)
                                      f.close()
                                      endtime = time.time()
                                      ## FIXME: 10 seconeds or more ?
                                      time.sleep(10 - ( endtime - starttime ))
                                  #now check if there is more pages
                                  match = regex_next.search(page)
                                  print match
                                  if match == None:
                                      more = False
                                  else:
                                      url = "http://www.google.com/search?num=1&start="+str(pagenum*1)+"&q="+search_term
                                      #url = "http://www.google.com"+match.group(1).replace('&amp;','&')
                           
                          if __name__=="__main__":
                              main()

                          تعليق

                          يعمل...
                          X