פרסומת
סריקת אינטרנט שימושית ביותר לאוטומטיות של משימות מסוימות המבוצעות באופן שגרתי באתרי אינטרנט. אתה יכול לכתוב סורק כדי ליצור אינטראקציה עם אתר אינטרנט בדיוק כפי שאדם יעשה.
ב מאמר קודם כיצד לבנות סורק אינטרנט בסיסי כדי למשוך מידע מאתררצית פעם ללכוד מידע מאתר אינטרנט? הנה איך לכתוב סורק כדי לנווט באתר ולחלץ את מה שאתה צריך. קרא עוד , כיסינו את היסודות של כתיבת א סורק אינטרנט מה זה גירוד אינטרנט? כיצד לאסוף נתונים מאתריםהאם אי פעם מצאת את עצמך מפסיד זמן יקר בקריאת נתונים בדפי אינטרנט? הנה איך למצוא את הנתונים שאתה רוצה עם גרידה באינטרנט. קרא עוד באמצעות מודול python, scrapy. המגבלה של גישה זו היא שהסורק אינו תומך ב-javascript. זה לא יעבוד כמו שצריך עם אתרים שעושים שימוש רב ב-javascript כדי לנהל את ממשק המשתמש. במצבים כאלה, אתה יכול לכתוב סורק שמשתמש בגוגל כרום ומכאן יכול לטפל ב-javascript בדיוק כמו דפדפן כרום רגיל מונע על ידי משתמש.
אוטומציה של Google Chrome כוללת שימוש בכלי שנקרא סֵלֶנִיוּם. זהו רכיב תוכנה אשר יושב בין התוכנית שלך לדפדפן, ועוזר לך להפעיל את הדפדפן דרך התוכנית שלך. במאמר זה, אנו לוקחים אותך בתהליך המלא של אוטומציה של Google Chrome. השלבים כוללים בדרך כלל:
- הגדרת סלניום
- שימוש ב-Google Chrome Inspector כדי לזהות חלקים בדף האינטרנט
- כתיבת תוכנית Java לאוטומציה של Google Chrome
לצורך המאמר, הרשו לנו לחקור כיצד לקרוא את גוגל מייל מג'אווה. בעוד שגוגל מספקת ממשק API (ממשק תכנות יישומים) לקריאת דואר, במאמר זה אנו משתמשים בסלניום כדי ליצור אינטראקציה עם Google Mail כדי להדגים את התהליך. גוגל מייל עושה שימוש רב ב-javascript, ולכן הוא מועמד טוב ללימוד סלניום.
הגדרת סלניום
מנהל התקן אינטרנט
כפי שהוסבר לעיל, סֵלֶנִיוּם מורכב מרכיב תוכנה הפועל כתהליך נפרד ומבצע פעולות מטעם תוכנת java. רכיב זה נקרא מנהל התקן אינטרנט ויש להוריד אותו למחשב שלך.
לחץ כאן כדי לעבור לאתר ההורדות של Selenium, לחץ על המהדורה האחרונה והורד את הקובץ המתאים למערכת ההפעלה של המחשב שלך (Windows, Linux או MacOS). זהו ארכיון ZIP המכיל chromedriver.exe. חלץ אותו למקום מתאים כגון C:\WebDrivers\chromedriver.exe. נשתמש במיקום זה מאוחר יותר בתוכנית Java.
מודולי ג'אווה
השלב הבא הוא להגדיר את מודולי ה-Java הדרושים לשימוש בסלניום. בהנחה שאתה משתמש ב-Maven כדי לבנות את תוכנית java, הוסף את התלות הבאה שלך POM.xml.
org.seleniumhq.selenium סלניום-ג'אווה 3.8.1
כאשר אתה מפעיל את תהליך הבנייה, יש להוריד ולהגדיר את כל המודולים הנדרשים במחשב שלך.
סלניום צעדים ראשונים
בואו נתחיל עם סלניום. הצעד הראשון הוא ליצור א ChromeDriver למשל:
מנהל התקן WebDriver = ChromeDriver();
זה אמור לפתוח חלון של Google Chrome. תנו לנו לנווט לדף החיפוש של גוגל.
driver.get(" http://www.google.com");
השג הפניה לרכיב קלט הטקסט כדי שנוכל לבצע חיפוש. לרכיב קלט הטקסט יש את השם ש. אנו מאתרים רכיבי HTML בדף באמצעות השיטה WebDriver.findElement().
WebElement element = driver.findElement (By.name("q"));
ניתן לשלוח טקסט לכל אלמנט באמצעות השיטה sendKeys(). תנו לנו לשלוח מונח חיפוש ולסיים אותו בשורה חדשה כדי שהחיפוש יתחיל מיד.
element.sendKeys("terminator\n");
כעת, כאשר מתבצע חיפוש, עלינו להמתין לדף התוצאות. אנחנו יכולים לעשות זאת באופן הבא:
new WebDriverWait (נהג, 10) .until (d -> d.getTitle().toLowerCase().startsWith("terminator"));
הקוד הזה בעצם אומר לסלניום לחכות 10 שניות ולחזור כשכותרת העמוד מתחילה עם טרמינטור. אנו משתמשים בפונקציית למבדה כדי לציין את התנאי שאליו יש לחכות.
כעת נוכל לקבל את כותרת העמוד.
System.out.println("כותרת: " + driver.getTitle());
לאחר שתסיים עם ההפעלה, ניתן לסגור את חלון הדפדפן באמצעות:
driver.quit();
וזו, אנשים, הפעלת דפדפן פשוטה הנשלטת באמצעות Java באמצעות סלניום. נראה די פשוט, אבל מאפשר לך לתכנת הרבה דברים שבדרך כלל היית צריך לעשות ביד.
באמצעות Google Chrome Inspector
מפקח גוגל כרום גלה בעיות באתר עם כלי מפתחי Chrome או Firebugאם עקבת אחר מדריכי ה-jQuery שלי עד כה, ייתכן שכבר נתקלת בבעיות קוד ולא ידעת כיצד לתקן אותן. כאשר מתמודדים עם קטע קוד לא פונקציונלי, זה מאוד... קרא עוד הוא כלי שלא יסולא בפז לזיהוי אלמנטים לשימוש עם סלניום. זה מאפשר לנו למקד את האלמנט המדויק מג'אווה לחילוץ מידע וכן פעולה אינטראקטיבית כמו לחיצה על כפתור. להלן הסבר על אופן השימוש במפקח.
פתח את Google Chrome ונווט לדף, אמור את דף ה-IMDb עבור ליגת הצדק (2017).
תן לנו למצוא את האלמנט שרוצה למקד, נגיד תקציר הסרט. לחץ לחיצה ימנית על הסיכום ובחר "בדוק" מהתפריט הקופץ.

מהכרטיסייה "אלמנטים", אנו יכולים לראות שטקסט הסיכום הוא א div עם שיעור של summary_text.

שימוש ב-CSS או XPath לבחירה
סלניום תומך בבחירת אלמנטים מהדף באמצעות CSS. (דיאלקט CSS נתמך הוא CSS2). לדוגמה כדי לבחור את טקסט הסיכום מדף ה-IMDb למעלה, נכתוב:
WebElement summaryEl = driver.findElement (By.cssSelector("div.summary_text"));
אתה יכול גם להשתמש ב-XPath כדי לבחור אלמנטים בצורה מאוד דומה (Go פה למפרט). שוב, כדי לבחור את טקסט הסיכום, היינו עושים:
WebElement summaryEl = driver.findElement (By.xpath("//div[@class='summary_text']"));
ל-XPath ול-CSS יש יכולות דומות כך שתוכל להשתמש בכל מה שנוח לך.
קריאת דואר גוגל מ-Java
הבה נבחן כעת דוגמה מורכבת יותר: שליפת דואר גוגל.
הפעל את מנהל ההתקן של Chrome, נווט אל gmail.com והמתן עד שהדף ייטען.
מנהל התקן WebDriver = ChromeDriver(); driver.get(" https://gmail.com"); new WebDriverWait (נהג, 10) .until (d -> d.getTitle().toLowerCase().startsWith("gmail"));
לאחר מכן, חפש את שדה האימייל (הוא נקרא עם המזהה מזהה מזהה) והזן את כתובת האימייל. לחץ על הַבָּא לחצן והמתן עד שדף הסיסמה ייטען.
/* הקלד שם משתמש/אימייל */ { driver.findElement (By.cssSelector("#identifierId")).sendKeys (email); driver.findElement (By.cssSelector(".RveJvd")).click(); } חדש WebDriverWait (נהג, 10) .until (d ->! d.findElements (By.xpath("//div[@id='password']")).isEmpty() );
כעת, נזין את הסיסמה, לחץ על הַבָּא לחצן שוב והמתן עד שדף Gmail ייטען.
/* הקלד סיסמה */ { driver .findElement (By.xpath("//div[@id='password']//input[@type='password']")) .sendKeys (סיסמה); driver.findElement (By.cssSelector(".RveJvd")).click(); } חדש WebDriverWait (נהג, 10) .until (d ->! d.findElements (By.xpath("//div[@class='Cp']")).isEmpty() );
אחזר את רשימת שורות הדואר האלקטרוני ולופ מעל כל ערך.
רשימהrows = driver .findElements (By.xpath("//div[@class='Cp']//table/tbody/tr")); for (WebElement tr: rows) { }
עבור כל ערך, אחזר את ה מ שדה. שים לב שחלק מערכי מאת יכולים לכלול מספר אלמנטים בהתאם למספר האנשים בשיחה.
{ /* From Element */ System.out.println("From: "); עבור (WebElement e: tr .findElements (By.xpath(".//div[@class='yW']/*")) { System.out.println(" " + e.getAttribute("email") + ", " + e.getAttribute("שם") + ", " + e.getText()); } }
עכשיו, תביא את הנושא.
{ /* Subject */ System.out.println("Sub: " + tr.findElement (By.xpath(".//div[@class='yNN']")).getText()); }
והתאריך והשעה של ההודעה.
{ /* Date/Time */ WebElement dt = tr.findElement (By.xpath("./td[8]/*")); System.out.println("תאריך: " + dt.getAttribute("כותרת") + ", " + dt.getText()); }
הנה המספר הכולל של שורות הדוא"ל בדף.
System.out.println (rows.size() + " מיילים.");
ולבסוף, סיימנו אז עזבנו את הדפדפן.
driver.quit();
לסיכום, אתה יכול להשתמש בסלניום עם Google Chrome לסריקת אתרים אלה שמשתמשים ב-Javascript בכבדות. ועם Google Chrome Inspector, די קל לחשב את ה-CSS או XPath הנדרשים כדי לחלץ או לקיים אינטראקציה עם אלמנט.
האם יש לך פרויקטים שמרוויחים מהשימוש בסלניום? ואיזה בעיות אתה מתמודד עם זה? נא לתאר בהערות למטה.