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

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

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

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

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

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

    אני לא יודע אם תומך בNODE.JS...אבדוק.

    יום נפלא שיהיה לכם ותודה שוב

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

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

    ובנתיים אנסה את http://code.613m.org/viewtopic.php?f=1&t=249#p1756

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

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

      @אליעזר

      כל חמש דקות

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

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

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

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

        תלמד את צורת החיפוש המובנה של הפורום עצמו, ובמקום לפנות לדף הבית של הפורום תשלח בקשה ישר עם נתוני החיפוש של המילה הרצויה + תאריכי טווח, וכך יהיה לך יותר קל לנתח את התוצאות

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

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

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

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

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

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

            <!-- s:-) --><img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":-)" title="מחייך" /><!-- s:-) -->
            קלעת למטרה...
            תודה רבה

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

            תגובה 1 תגובה אחרונה
            0
            • 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
                                        • דף הבית
                                        • קטגוריות
                                        • פוסטים אחרונים
                                        • משתמשים
                                        • חיפוש
                                        • חוקי הפורום