דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. סריקת אתר וזיהוי שינויים בנושא מסויים

סריקת אתר וזיהוי שינויים בנושא מסויים

מתוזמן נעוץ נעול הועבר ארכיון code613m
23 פוסטים 7 כותבים 1.5k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • avrahamA מנותק
    avrahamA מנותק
    avraham
    כתב ב נערך לאחרונה על ידי
    #10

    @אליעזר

    🙂
    קלעת למטרה...
    תודה רבה

    לא קשה לנחש מה המטרה בפרוייקט הזה 🙂 🙂

    פורסם במקור בפורום CODE613 ב20/02/2017 20:34 (+02:00)

    תגובה 1 תגובה אחרונה
    1
    • א מנותק
      א מנותק
      אליעזר 0
      כתב ב נערך לאחרונה על ידי
      #11

      כן. למי שמכיר אותי קצת

      פורסם במקור בפורום CODE613 ב20/02/2017 23:58 (+02:00)

      תגובה 1 תגובה אחרונה
      0
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #12

        @אליעזר

        עכשיו מגיע את החלק הקל <!-- s:-) --><img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":-)" title="מחייך" /><!-- s:-) --> :
        ללמוד פייתון, או NODE.JS ... ולעשות זאת....)

        ספר לימוד לפייתון בעברית

        בהצלחה!

        פורסם במקור בפורום CODE613 ב21/02/2017 14:17 (+02:00)

        תגובה 1 תגובה אחרונה
        2
        • א מנותק
          א מנותק
          אליעזר 0
          כתב ב נערך לאחרונה על ידי
          #13

          @avraham

          משהו כזה לדוגמא

          http://www.prog.co.il/search.php?query=סקריפט&exactname=1&starteronly=0&forumchoice[]=0&prefixchoice[]=&childforums=1&titleonly=0&showposts=0&searchdate=30
          

          נ"ב: כמה שניסתי לא הצלחתי להבין כיצד מוצאים את המחרוזת הזאת בחיפוש של פרוג (כלומר כיצד ידעת לנסחה)?
          בכל מקרה, היא לא עוזרת לי כל כך כי מגיע לדף החיפוש עצמו, ואני צריך את הURL שיחזיר את תוצאות החיפוש... (או שלא הבנתי משהו בדרך?)

          בנתיים נראה לי לעשות כך:
          לקבל חזרה הHTML, לחפש לפי ניתוח הדף את הרשימת לינקים (שהם ההפניות לנשואים הנידונים, למשל:

          Untitled-1.jpg
          ואותם לנתח עד להגעת לdictionary כזה: {title:link}
          ואז להשוות למילון קודם שישמר בקובץ חיצוני, ואם יהיה הפרש, ישלח לי מייל עם הלינק והכותרת.

          מה דעתכם?

          תודה רבה

          נ"ב: תיעוד התוכנית כרגע, שיסייע להבנה, מחילה על האנגלית הקלוקלת...

          from Tools.scripts.h2py import filedict
          import os
          
          
          def askSite(urlQuery,words):
              """find in site by query strings,
              find only data from last day
          
              :param urlQuery: semple:""
              :param words: query strings, simple: "yosi cohen"
              :return: dictionary of all href html in site, simple: "{title:link}"
              """
              pass
          
          def filterNews(oldData,newData):
              """filtr parms and return news date only
          
              :param oldData: dictionary
              :param newData: dictioanry
              :return: Only data that is in the newData or null
              """
              pass
          
          def sendMail(dictionaryData,ToMail):
              """format dictionry and send the data to "toMail"
          
              :param dictionaryData: dictionary only
              :param ToMail: text mail only: "mail@.domain.end"
              :return: true to successful false to failure
              """
              pass
          
          def saveDataToFile(fromDict,filePath):
              """save the data to text file in json format
          
              :param dict: dictionary
              :param filePath: filePath, exies or not (the def create file if it no exies)
              :return: true to successful false to failure
              """
              pass
          
          #initialization varibals
          filePath="objects\DB.txt"
          
          if os.path.exists(filePath):
              OldDate = open(filePath, "r+")
              print(OldDate.read(),"old")
              OldDate.close()
          else:
              OldDate=open(filePath,"w+")
              print(OldDate.read(),"new")
              OldDate.close()
          #המשך טרם נכתב
          

          פורסם במקור בפורום CODE613 ב20/03/2017 18:36 (+02:00)

          תגובה 1 תגובה אחרונה
          4
          • א מנותק
            א מנותק
            אליעזר 0
            כתב ב נערך לאחרונה על ידי
            #14

            נ"ב למותר לציין שזה קוד הפייתון הראשון שאני כותב.

            כרגע החסרון העקרי ברעיון הזה, הוא שהתוכנית תתאים ככפפה ליד רק לאתר מסוים, פרוג. ולא תצלח כלל לאתר אחר.
            זה לא באמת בעיה מצד הצורך שלי. אבל זה נשמע לי תכנון "תוכנה" לקוי מאד.

            פורסם במקור בפורום CODE613 ב20/03/2017 20:56 (+02:00)

            תגובה 1 תגובה אחרונה
            1
            • avrahamA מנותק
              avrahamA מנותק
              avraham
              כתב ב נערך לאחרונה על ידי
              #15

              תשלח בקשת POST לכתובת הזו:

              http://www.prog.co.il/search.php?do=process
              

              עם הנתונים האלה

              beforeafter=after&childforums=1&do=process&dosearch=%D7%97%D7%A4%D7%A9&exactname=1&forumchoice%5B%5D=0&order=descending&prefixchoice%5B%5D=&query=%D7%A1%D7%A7%D7%A8%D7%99%D7%A4%D7%98&replyless=0&replylimit=0&s=&saveprefs=1&searchdate=30&searchthreadid=&searchuser=&securitytoken=guest&showposts=0&sortby=lastpost&starteronly=0&tag=&titleonly=0
              

              זה יפנה אותך לדף של "בקשת החיפוש בטיפול" שמכיל לינק למזהה של החיפוש. משם תוכל להמשיך לדף של תוצאות החיפוש ולנתח את התוצאות.

              בקשר לתכנון התוכנה, נראה לי שצריך להפריד את זה ל3 שכבות, בקשת החיפוש, ניתוח התוצאות, וההחלטה מה לעשות עם התוצאות. בשלב השני אין מנוס מלתכנן את זה לכל אתר בנפרד, וגם השלב הראשון כנראה ישתנה מאתר לאתר. כך שתוכל לתכנן את הקוד בצורה שאפשר להוסיף מחלקות רלוונטיות לכל אתר שתרצה להוסיף בהמשך, ולשלוח את התוצאות אחרי ניתוח לשכבה השלישית

              פורסם במקור בפורום CODE613 ב20/03/2017 23:01 (+02:00)

              תגובה 1 תגובה אחרונה
              3
              • א מנותק
                א מנותק
                אליעזר 0
                כתב ב נערך לאחרונה על ידי
                #16

                תודה רבה!
                נשמע מאד הגיוני.

                (כעת עלה בדעתי לנסות אולי לכתוב הכל דרך חיפוש מותאם בגוגל, וככה יתאים לכל אתר, רק יש לבדוק אם ניתן לקבל תוצאות כמו חיפוש באתר עצמו, מצד האיכות, כרגע אני לא מצליח לכתוב חיפוש בגוגל שיחפש רק בתת פורם עיצוב גרפי למשל, וגם רימון חוסם יותר את החיפוש הזה)

                פורסם במקור בפורום CODE613 ב21/03/2017 11:47 (+02:00)

                תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #17

                  לחיפוש גוגל יש חסרונות עצומים כשזה נוגע לפורומים (שמתעקשים להיות ישנים בכל התפיסה של SEO).
                  למשל אם יש בחתימה של מישהו את המילה שאתה מחפש, כל מקום שהוא מופיע זה רלוונטי בדיוק כמו תוכן ההודעה שלו.
                  אותו דבר התאריך - כל הדף שווה את התאריך ההקפצה.
                  לכן בפרוג עדיף לחפש עם המנוע שלהם.

                  פורסם במקור בפורום CODE613 ב21/03/2017 11:57 (+02:00)

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  1
                  • א מנותק
                    א מנותק
                    אליעזר 0
                    כתב ב נערך לאחרונה על ידי
                    #18

                    אוי ואבוי... נשמע גרוע באמת. רוב התוצאות יהיו זבל כנראה.
                    טוב, אז אחזור למה שחשבתי מראש ונוותר על תוכנת "גמישה".

                    תודה רבה

                    פורסם במקור בפורום CODE613 ב21/03/2017 12:02 (+02:00)

                    תגובה 1 תגובה אחרונה
                    0
                    • א מנותק
                      א מנותק
                      אליעזר 0
                      כתב ב נערך לאחרונה על ידי
                      #19

                      שלום!
                      האם מקובל להציג כאן קוד לדון עליו ולא רק שאלות בו?
                      אם לא, תקנו אותי בבקשה.

                      אם כן...

                      כאמור זה הקוד פייתון הראשון שלי, אשמח לכל הערה בונה, ולכן אני מצרף כאן את הקוד של הפונקציה שכתבתי היום...
                      יעודו:
                      מקבל שתי רשימות באורך זהה, הראשונה היא זו שאליה משווים, השניה זו שנבדקת בפועל. עובר לפי הסדר בלבד, ומשווה אברים, אברים לא זהים, מוחזרים ברשימה חדשה.

                      תודה לכולכם!

                      def filterNews(OldData, NewData):
                          """filtr parms and return news date only (test if 1==1,2==2...)
                      
                          :param oldData,newList: identical lists of dictionary [{title:link},{title:link}]
                          :return: Only data that is in the newData or null (if new[1]!=old[1],now[2]!=old[2]...)
                          """
                          try:
                              if str(type(OldData)) and str(type(NewData)) !="<class 'list'>":
                                  raise AttributeError("the def work on list only!")
                              if len(OldData) != len(NewData):
                                  raise AttributeError("The lists are not identical in length!")
                              newList=[]
                              startIndex=0
                              endIndex=len(NewData)
                              while startIndex<endIndex:
                                  if str(OldData[startIndex])!=str(NewData[startIndex]):
                                      newList.append(NewData[startIndex])
                                  startIndex+=1
                          except AttributeError as er:
                              print("Error:", er)
                              return False
                          else:
                              return newList
                      
                      
                      old=[1,2,3,4,5]
                      new=[4,5,3,45,5]
                      
                      print(filterNews(old,new))
                      print(old,new)
                      

                      פורסם במקור בפורום CODE613 ב22/03/2017 20:57 (+02:00)

                      תגובה 1 תגובה אחרונה
                      0
                      • T מנותק
                        T מנותק
                        trew
                        כתב ב נערך לאחרונה על ידי
                        #20

                        @אליעזר

                        שלום!
                        האם מקובל להציג כאן קוד לדון עליו ולא רק שאלות בו?
                        אם לא, תקנו אותי בבקשה.

                        אם כן...

                        כאמור זה הקוד פייתון הראשון שלי, אשמח לכל הערה בונה, ולכן אני מצרף כאן את הקוד של הפונקציה שכתבתי היום...
                        יעודו:
                        מקבל שתי רשימות באורך זהה, הראשונה היא זו שאליה משווים, השניה זו שנבדקת בפועל. עובר לפי הסדר בלבד, ומשווה אברים, אברים לא זהים, מוחזרים ברשימה חדשה.

                        תודה לכולכם!

                        def filterNews(OldData, NewData):
                            """filtr parms and return news date only (test if 1==1,2==2...)
                        
                            :param oldData,newList: identical lists of dictionary [{title:link},{title:link}]
                            :return: Only data that is in the newData or null (if new[1]!=old[1],now[2]!=old[2]...)
                            """
                            try:
                                if str(type(OldData)) and str(type(NewData)) !="<class 'list'>":
                                    raise AttributeError("the def work on list only!")
                                if len(OldData) != len(NewData):
                                    raise AttributeError("The lists are not identical in length!")
                                newList=[]
                                startIndex=0
                                endIndex=len(NewData)
                                while startIndex<endIndex:
                                    if str(OldData[startIndex])!=str(NewData[startIndex]):
                                        newList.append(NewData[startIndex])
                                    startIndex+=1
                            except AttributeError as er:
                                print("Error:", er)
                                return False
                            else:
                                return newList
                        
                        
                        old=[1,2,3,4,5]
                        new=[4,5,3,45,5]
                        
                        print(filterNews(old,new))
                        print(old,new)
                        

                        הגרסה שלי לקוד

                        עם הזמן תראה שאתה יכול להשתמש בפייתון בלי לדחוף לכל דבר try except
                        try except אתה משתמש במקומות שאתה נזרק מהתוכנית כי אתה לא יודע מה אתה מקבל ואין לך אפשרות לבדוק / לא כדאי לך לבדוק את שלל האופציות האחרות

                        def filterNews(OldData, NewData):
                            """filtr parms and return news date only (test if 1==1,2==2...)
                         
                            :param oldData,newList: identical lists of dictionary [{title:link},{title:link}]
                            :return: Only data that is in the newData or null (if new[1]!=old[1],now[2]!=old[2]...)
                            """
                               if not isinstance(OldData, list) and not isinstance(NewData, list):
                                print("the def work on list only!")
                                return None
                            elif len(OldData) != len(NewData):
                                print("The lists are not identical in length!")
                                return None
                            newList=[]
                            for New, Old in zip(NewData, OldData):
                                if NewData[New] != OldData[Old]:
                                    newList.append(New)
                            return newList
                         
                        old=[1,2,3,4,5]
                        new=[4,5,3,45,5]
                         
                        print(filterNews(old,new))
                        print(old,new)
                        

                        מה היה לנו פה
                        zip עובר על שתי מערכים בו זמנית אבר מפה ואבר משם
                        In [8]: a, b = range(1, 10), range(100, 1000, 100)

                        In [9]: for i, j in zip (a, b):
                           ...:     print("{0} -- {1}".format(i, j))
                           ...:     
                        1 -- 100
                        2 -- 200
                        3 -- 300
                        4 -- 400
                        5 -- 500
                        6 -- 600
                        7 -- 700
                        8 -- 800
                        9 -- 900
                        

                        בפייתון מעבר על מילון בלולאה מוציא רק את המפתחות ולא את התוכן (אתה מקבל מערך של מפתחות)

                        In [13]: my_dict = {i:j for i, j in zip(range(1,10), "ABCDEFGIJ")}
                        
                        In [14]: my_dict
                        Out[14]: {1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E', 6: 'F', 7: 'G', 8: 'I', 9: 'J'}
                        
                        In [16]: for i in my_dict:
                            ...:     print (i)
                            ...:     
                        1
                        2
                        3
                        4
                        5
                        6
                        7
                        8
                        9
                        

                        isinstance הצורה בפייתון שבודקים type של אובייקט

                        אחרי כל הברברת נראה שזה מה שאתה מחפש
                        https://github.com/GregUK/vb3_7_scraper

                        אגב זה לא רק לאתר אחד אלא למערכת פורומים אחת שנחשבת בין הפופולריות.

                        פורסם במקור בפורום CODE613 ב23/03/2017 19:39 (+02:00)

                        תגובה 1 תגובה אחרונה
                        3
                        • 0 מנותק
                          0 מנותק
                          0
                          כתב ב נערך לאחרונה על ידי
                          #21

                          תודה רבה על התגובה!
                          אני צריך ללמוד אותה בעיון.
                          בנתיים אודה מקרב לב על התגובה המושקעת ומועילה

                          פורסם במקור בפורום CODE613 ב26/03/2017 14:28 (+03:00)

                          תגובה 1 תגובה אחרונה
                          1
                          • T מנותק
                            T מנותק
                            trew
                            כתב ב נערך לאחרונה על ידי
                            #22

                            פרוג שידרגו את האתר שלהם חסדי הקל
                            תוכל לקבל json עם פוסטים חדשים, כתבתי את רוב הסקריפט העבודה שנשארה יחסית קטנה.

                            תהנה

                            #!/usr/bin/python3
                            
                            import requests
                            import time
                            import json
                            
                            def getUpdate():
                                with requests.Session() as s:
                                    url = 'http://www.prog.co.il/activity/get'
                                    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',
                                                'Accept': 'application/json, text/javascript, */*; q=0.01',
                                                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
                                                'X-Requested-With': 'XMLHttpRequest'}
                                    params = {"filters[nodeid]":0,
                                               "filters[view]":"activity",
                                               "filters[per-page]":10,
                                               "filters[pagenum]":1,
                                               "filters[maxpages]":20,
                                               "filters[userid]":"0",
                                               "filters[showChannelInfo]":1,
                                               "filters[filter_time]":"time_lastmonth",
                                               "filters[filter_show]":"show_all",
                                               "filters[filter_new_topics]":1,
                                               "isAjaxTemplateRender":"true",
                                               "isAjaxTemplateRenderWithData":"true",
                                               "securitytoken":"replace with your security token"}
                                    resp = s.post(url, data=params, headers=headers).json()
                                return checkUpdate(resp)
                            
                            def checkUpdate(json):
                                ''' parse json to return only the new posts
                            
                                    params json: json file of 10 last update post
                                    type json: dict
                                '''
                                pass
                                # DOTO
                            
                            
                            
                            # update per 5 min
                            while True:
                                print(getUpdate())
                                time.sleep(60*5)
                            

                            פורסם במקור בפורום CODE613 ב20/04/2017 00:09 (+03:00)

                            תגובה 1 תגובה אחרונה
                            4
                            • 0 מנותק
                              0 מנותק
                              0
                              כתב ב נערך לאחרונה על ידי
                              #23

                              וואוו!
                              מדהים. איזה השקעה!
                              תודה רבה!

                              אעבור על הקוד בע"ה ואני בטוח שאחכים וגם יהיה לתועלת...

                              פורסם במקור בפורום CODE613 ב28/04/2017 00:18 (+03:00)

                              תגובה 1 תגובה אחרונה
                              0

                              • 1
                              • 2
                              בא תתחבר לדף היומי!
                              • התחברות

                              • אין לך חשבון עדיין? הרשמה

                              • התחברו או הירשמו כדי לחפש.
                              • פוסט ראשון
                                פוסט אחרון
                              0
                              • דף הבית
                              • קטגוריות
                              • פוסטים אחרונים
                              • משתמשים
                              • חיפוש
                              • חוקי הפורום