בירור | שמירת סיפור מהאינטרנט לקובץ pdf
-
@הייתי-שמח-להבין @נחמן-פלח אני רואה שהתלהבתם, אז הנה דוגמה קטנה איך להשתמש בסלניום כדי לגלוש באתר מתמחים טופ.
ראשית יש להתקין פייתון כמובן. כדאי להקפיד לסמן בוי את האפשרות להגדיר PATH.
שנית יש להתקין את שתי הספריות הבאות:pip install selenium webdriver-manager
הראשית היא סלניום - הספריה שנשתמש בה, והשני עוזר לנו להוריד ולהתקין אוטומטית את ה"דרייבר" - זהו בעצם החלק המקשר בין הקוד לבין הדפדפן.
נפתח קובץ פייתון חדש בשם surfMitmachimSelenium.py או כל שם מפוצץ אחר.
נתחיל בייבוא הספריות:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By
אחר כך נוריד אוטומטית דרייבר לדפדפן כרום:
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
בתקווה שאין שגיאות (חסימה בנטפרי וכדו'), נמשיך לשורה הבאה: נגלוש באתר מתמחים.
driver.get("https://mitmachim.top/")
כך נראה הדפדפן כרגע:
עכשיו דבר חשוב מאד: לפני שנלחץ על עוד אובייקט צריך לחכות לו ולא ללחוץ עליו לפני שהוא נטען. אז השורה הבאה נדרשת:
driver.implicitly_wait(2)
אנחנו רוצים להיכנס לקטגוריה "כללי עזרה הדדית", אז אנחנו צריכים למצוא את הכתובת שלו במקור הדף בhtml.
אז כמובן לוחצים f12. לחיצה ימנית -> בדיקה ->לחיצה ימנית על הhtml -> העתק -> העתק נתיב xpath
צילום מסך:
יופי, עכשיו נמצא את האובייקט הדרוש לפי הכתובת שלו:
element = driver.find_element(By.XPATH,"/html/body/div[1]/main/div[2]/div/div[2]/div[1]/ul/li[9]/div[1]/div[2]/h2/a")
נשים לב שהכתובת היא מה שהעתקנו מקודם.
נלחץ על השורה שמצאנו:element.click()
עכשיו נחפש אלמנט בדרך אחרת, לא לפי כתובת אלא לפי חלק מהמחרוזת המופיעה בלינק. ונלחץ עליו:
element = driver.find_element(By.PARTIAL_LINK_TEXT,"pdf") element.click()
זהו לבינתיים, בהצלחה ענקית.
-
@הייתי-שמח-להבין לא הבנתי את השאלה, ברור שזו רק הדגמה וקח את זה מכאן לאיפה שתרצה.
-
@הייתי-שמח-להבין למשל להשיג תור לדרכון ישראלי, או לבדוק אם ירד המחיר של אוזניות מסוימות, או אפילו לקנות את כל הסטוק מתחת למחיר מסויים. מה בשום פנים ואופן לא?! לחבר chatGPT בקצה השני ולהטריל את כל הפורום פה להנאתך עם איזה משתמש פיקטיבי.
-
@הייתי-שמח-להבין כמובן יש כלים נוספים לכריית נתונים, כמו beutifulsoup ואחרים, אבל זה הכי דומה לבן אדם, ולכן יכול לעשות כמעט כל דבר בלי להחסם.
-
@sivan22 כתב בבירור | שמירת סיפור מהאינטרנט לקובץ pdf:
@הייתי-שמח-להבין הנה קוד שיעשה במקומך את כל העבודה:
from base64 import b64decode import os import time from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.print_page_options import PrintOptions, Orientation # some tweaks to bypass bot detection options = webdriver.ChromeOptions() options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) options.add_argument("--disable-blink-features=AutomationControlled") options.page_load_strategy = 'normal' options.headless = True # initialise webdriver driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options) #driver = webdriver.Chr for i in range(1,123): driver.get("https://online.fliphtml5.com/nejge/kkyl/#p="+str(i)) time.sleep(1) #save the page to disk printOptions = PrintOptions() printOptions.orientation="landscape" open(str(i)+".pdf", "wb").write(b64decode(driver.print_page(printOptions))) # after scraping all pages, merge them with pypdf from pypdf import PdfMerger files = os.listdir() pdfs = [s for s in files if '.pdf' in s] #sorting the file names by number - not alphabethic def forSorting(s)->int: s=s.split('.')[0] return int(s) pdfs.sort(key=forSorting) merger = PdfMerger() for pdf in pdfs: merger.append(pdf) merger.write("result.pdf") merger.close()
והוא אכן עשה את העבודה, הנה התוצאה:
result.pdf
שים לב, @משה-שמחה
אז נעים להכיר את סלניום, מלך הבוטים...זה נפתח בנטפרי @משה-שמחה סמן את הנושא כניפתר
-
@sivan22 כתב בבירור | שמירת סיפור מהאינטרנט לקובץ pdf:
@הייתי-שמח-להבין למשל להשיג תור לדרכון ישראלי, או לבדוק אם ירד המחיר של אוזניות מסוימות, או אפילו לקנות את כל הסטוק מתחת למחיר מסויים. מה בשום פנים ואופן לא?! לחבר chatGPT בקצה השני ולהטריל את כל הפורום פה להנאתך עם איזה משתמש פיקטיבי.
אולי המנהלים יכולים לחבר לפה איזה ChatGPT, ולבקר את כל תכני הפורום...
-
-
-
-
-
-
-