6.8 xml, xpath הרצאה
מה זה XML?¶
- אז כמו ג'סון - XML זה דרך להעביר מידע / לשמור מידע בצורה קריאה יחסית, פשוט וקלה. אומנם זה שיטה קצת מיושנת ביחס JSON, ופחות משתמשים בה אבל היא ללא ספק נפוצה.
למה ללמוד על XML?¶
- מאוד נפוץ בנקודות API באתרים.
- מאוד נפוץ ופפולרי בהמון תוכנות.
<library> <book genre="mystery"> <title>Sherlock Holmes</title> <author>Arthur Conan Doyle</author> <price>15</price> </book> <book genre="fantasy"> <title>The Hobbit</title> <author>J.R.R. Tolkien</author> <price>25</price> </book> <book genre="science-fiction"> <title>Dune</title> <author>Frank Herbert</author> <price>30</price> </book> <book genre="mystery"> <title>Murder on the Orient Express</title> <author>Agatha Christie</author> <price>18</price> </book> </library> - מאוד דומה לhtml
- בזכות זה שזה מאוד דומה לhtml, כל תוכנה שיודעת לפרסר xml תדע גם לפרסר html - אז שימושי לדעת לעבוד עם xml.
מודול xml¶
- מודול מובנה!
-
דומה מאוד ל
bs4, ואפשר להשתמש בזה כתחליף. -
פירסור מקובץ xml
שפה - XPATH¶
- מהר מאוד XML ו- HTML יכולים לגדול ולהפוך להיות מאוד לא ברורים, כמו שראינו מקודם ואנחנו רוצים לפעמים למשל כמו בweb-scraping לשלוף מידע ספציפי מהXML.
- כדי לעשות זאת בקלות אפשר להשתמש בשפת XPATH, שמשמשת אותנו בשליפות על קבצי XML/HTML
אז איך משתמשים בXPATH?¶
- נלמד איך להשתמש באתר הבא: http://xpather.com/
- דומה לקובץ XML (הכניסו אותו לאתר):
<library> <book genre="mystery"> <title>Sherlock Holmes</title> <author>Arthur Conan Doyle</author> <price>15</price> </book> <book genre="fantasy"> <title>The Hobbit</title> <author>J.R.R. Tolkien</author> <price>25</price> </book> <book genre="science-fiction"> <title>Dune</title> <author>Frank Herbert</author> <price>30</price> </book> <book genre="mystery"> <title>Murder on the Orient Express</title> <author>Agatha Christie</author> <price>18</price> </book> </library> - עכשיו נרית את השאילתות XPATH הבאות באתר:
- XPath:
//title - XPath:
//book[@genre='mystery']/author - XPath:
//book[price>20] - XPath:
//book[position()=1] - XPath:
//book[last()] - XPath:
//book[starts-with(title, 'The')]
טיפים אחרונים לXPATH¶
- אז XPATH מסובך, הראתי רק דוגמאות פשוטות יחסית.
- אם אתה רוצה ללמוד עוד על XPAH אתה מוזמן לחפש באינטרנט בעצמך.
- תמיד תשתמש בסנד-בוקס כמו http://xpather.com/ כדי להרכיב את השאילתה שלך
- הכלי XPATH מאוד שימושי בweb-scraping
המודול lxml¶
- המודול מאפשר לנו להשתמש בxpath בפייתון!
- הרץ
pip install lxml
- תנאים עם xpath
from lxml import etree # Parse XML from a file tree = etree.parse('example.xml') # XPath expression to select 'person' elements with age greater than 25 persons = tree.xpath('//person[age > 25]') # Accessing elements for person in persons: name = person.find('name').text age = person.find('age').text print("Name:", name) print("Age:", age)