lxml הוא מודול פייתון מתוחכם, חזק, חופשי וייחודי המחייב את ספריות libxml2 וlibxslt, המאפשר למפתחי פייתון לעבוד עם שני פנימאי קבצי XML ו- HTML librarylxml עיבוד XML Python code.An הוא XML (Extensible Markup Language ספרייה) עיבוד נכתבה בשפת תכנות Python, שתוכננה במיוחד כדי לבצע את מפרט API ElementTree ככל האפשר.
זה יכול להאריך את API ElementTree לחשוף פונקציונליות ספציפית של ספריות libxslt וlibxml2, כגון תירגע NG (הדור הבא), XPath, XML Schema, c14n, XSLT (Extensible Stylesheet Language), lxml etc.Use לקרוא קוד פייתון מ stylesheetsDevelopers XSLT תוכל להשתמש בתכנית lxml לקרוא קוד פייתון מגיליונות סגנון XSLT וביטויי XPath באמצעות פונקציות הארכה. מגוון רחב של הדרכות זמינים על הפרויקט & rsquo; s דף הבית (ראה קישור בסוף המאמר).
התוכנה היא קוד פתוח על ידי עיצוב ומשלבת את שלמות התכונה ומהירות של הספריות האמורות עם הפשטות של Python & rsquo; s API (ממשק תכנות יישומים) .Getting התחיל עם lxmlIt די קל להתקין lxml בהפצת גנו / לינוקס באמצעות האתר הרשמי של; ארכיון המקור מופץ בSoftoware וrsquo פרויקט ו. פשוט להוריד את חבילת המקור, לשמור אותו בספריית הבית שלך, לפרוק אותו, לפתוח את יישום המסוף ונווט אל המיקום של קבצי ארכיון חילוץ (/home/softoware/lxml-3.4.1 cd למשל).
הפעל את & lsquo; לעשות & rsquo; הפקודה כדי לקמפל את התכנית, שאמורה לקחת כ 1-2 דקות על מחשב מודרני. לאחר הידור מוצלח, לרוץ & lsquo; make install & rsquo; פקודה כמשתמש או & lsquo; sudo make install & rsquo; הפקודה כמשתמש מיוחס להתקנת wide.Supports מערכת lxml GNU / Linux ו- Microsoft Windows הפעלת systemsThe תוכנה נתמכת באופן רשמי על גנו / לינוקס ו- Microsoft Windows מערכות הפעלה. זה כבר נוסה בהצלחה במחשבים 32 סיביות ו -64 סיביות
מה חדש במהדורה זו:.
גנרטור htmlfile HTML החדש שילווה את API המשכי xmlfile מצטבר. תיקון על ידי בורק ארסלאן. באגס קבוע: lxml.sax.ElementTreeContentHandler לא לאתחל superclass. מה חדש בגרסת 3.3.1:
LP # 1014290: מסמכי HTML מנותחים עם parser.feed () לא הצליח למצוא אלמנטים באיטרציה תג .
LP # 1273709: הבנייה בPyPy נכשלה עקב חסר תמיכה לPyUnicode_Compare () וPyByteArray _ * () בC-API של PyPy .
LP # 1274413: Compilation בMSVC נכשל עקב חסר & quot; stdint.h & quot; קובץ כותרת סטנדרטי. LP # 1274118: iterparse () לא הצליח לנתח BOM קידומת קבצים .
מה חדש בגרסה 3.0 אלפא 2:
שיטת .iter () של אלמנטים עכשיו מקבלת את טענות תג כמו & quot; {} * שם & quot; לחפש אלמנטים עם שם מקומיים נתון בכל מרחב. עם תוספת זו, כל הצירופים של תווים כלליים עכשיו לעבוד כצפוי: & quot; {ns} שם & quot ;, & quot; שם {} & quot ;, & quot; שם {*} & quot ;, & quot; {ns} * & quot ;, & quot; {} * & Quot; ו& quot; {*} * & quot ;. שים לב ש& quot; שם & quot; שווה ל & quot; {} שם & quot ;, אך & quot; * & quot; הוא & quot; {*} * & quot ;. אותו השינוי חל על .getiterator (), .itersiblings (), .iterancestors (), .iterdescendants (), .iterchildren () ו.itertext () שיטות; strip_attributes (), strip_elements () וstrip_tags () פונקציות כמו גם את מעמד iterparse (). C14N מאפשר המפרט את הקידומות כלול להיות מקודם לרמה העליונה בהמשכים בלעדיים. באגס קבוע: עובר מחרוזות Unicode ארוכות אל תוך ממשק מנתח הזנה () לא הצליח לקרוא את המחרוזת כולה. מה חדש בגרסת 2.3.5:
- קראש כאשר מיזוג צמתים טקסט בelement.remove ( ).
- קראש במנתח סקסופון / יעד כאשר דיווחו doctype הריק.
מה חדש בגרסת 2.3.4:
מה חדש בגרסת 2.3.2:
lxml.objectify.deannotate () יש cleanup_namespaces אפשרות בוליאני חדש כדי להסיר את הצהרות מרחב לאובייקט (ובדרך כלל לנקות את הצהרות מרחב) לאחר הסרת ההסברים הסוג. lxml.objectify צבר את תפקידיו SubElement עצמו () כעותק של etree.SubElement כדי למנוע יבוא אחרת מיותר של lxml.etree בצד המשתמש. באגס קבוע: קבוע & quot; צאצא & quot; באג בcssselect פעם שנייה (לאחר תיקון ראשון בlxml 2.3.1). השינוי הקודם הביא לנסיגה בביצועים רצינית להערכת הביטוי המתורגם בהתבסס XPath. שים לב שזה שובר את השימוש של חלק מביטויי XPath שנוצרו כנתיבי מיקום XSLT שעבדו בעבר ב2.3.1. ניתוח קבוע של כמה בוררים בcssselect. רווחים לאחר combinators & quot; & Gt; & quot ;, & quot; + & quot; ו& quot; ~ & quot; עכשיו הוא התעלם בצורה נכונה. בעבר הוא היה אמור לעבור כCombinator צאצא. לדוגמא, & quot; div & gt; .foo & quot; היה מנותח זהה & quot; div & gt; * .foo & quot; במקום & quot; div & gt; .foo & quot;. מה חדש בגרסת 2.3.1:
אפשרות חדשה kill_tags בlxml.html.clean להסיר תגים ספציפיים והתוכן שלהם (כלומר, כל עץ המשנה שלהם). pi.get () וpi.attrib על הוראות עיבוד לנתח פסאודו-תכונות מתוכן הטקסט של הוראות עיבוד. lxml.get_include () מחזיר רשימה של נתיבים כוללים שיכול לשמש כדי לקמפל קוד C חיצוני נגד lxml.etree. זה נדרש במיוחד עבור lxml קשור באופן סטטי בונה כאשר קוד צריך לקמפל נגד גרסאות קובץ הכותרת אותו מדויקים כפי שlxml עצמו. Resolver.resolve_file () לוקח close_file אפשרות נוספת שמגדיר אם קובץ האובייקט (הדמוי) יהיה סגור אחרי שקרא או לא. כברירת מחדל, הקובץ יהיה סגור, כמשתמש לא צפוי לשמור על התייחסות אליו. באגס קבוע: ניקוי HTML לא להסיר את 'נתונים: ". קישורים שילוב מנתח html5lib משתמש כעת את היישום "הרשמי" בhtml5lib עצמו, שהופך אותו לעבוד עם גרסאות חדשות יותר של הספרייה. בlxml.sax, endElementNS () יכול בצורה לא נכונה לדחות תג שם רגיל כאשר אירוע תחילת המקביל להסיק אותו שם תג רגיל להיות במרחב ברירת המחדל. כאשר אובייקט כמו קבצים פתוח מועבר לתוך לנתח () או iterparse (), המנתח לא יהיה עוד הקרוב לאחר שימוש. זה חוזר שינוי בlxml 2.3 שבו כל הקבצים יהיו סגורים. זוהי האחריות המשתמשים כדי לסגור כראוי את קובץ האובייקט (הדמוי), גם במקרי שגיאה. שגיאת טענה בlxml.html.cleaner כאשר השלכת אלמנטים ברמה העליונה. בlxml.cssselect, להשתמש xpath 'B //' (קיצור של 'צומת / צאצא-או-עצמית :: () / ב') במקום '/ צאצא :: B' לcss בורר צאצא ('ב'). זה עושה כמה מקרי קצה שיהיה עקבי עם בורר ההתנהגות בWebKit ו- Firefox, והופך את שבילי מיקום חוקיים ביטויי css יותר (לשימוש בXSL: התאמת תבנית). בlxml.html, תגים שלא נבחר שלא להופיע יותר בערכי טופס שנאספו. הוספה / סרה של ערכים מ / אל שדה טופס בחר מרובה בוחר אותם כמו שצריך וunselects. שינויים אחרים: Static בונה ניתן לציין את הספרייה להורדה עם אפשרות --download-dir. מה חדש בגרסה 2.3:
כאשר מחפש ילדים, lxml.objectify לוקח '{} תג' כמשמעות מרחב ריק, בניגוד למרחב ההורה. באגס קבוע: כאשר סיים לקרוא מאובייקט כמו קבצים, המנתח קורא מייד .close השיטה שלה (). בסיום ניתוח, iterparse () נסגר מייד קובץ הקלט. עבודה מסביב לבאג libxml2 שיכול להשאיר את מנתח HTML במדינה שאינה פונקציונלית לאחר ניתוח מסמך severly שבור (הקבוע בlibxml2 2.7.8). אוהל
תג marque בקוד HTML ניקוי בשם בצורה נכונה. שינויים אחרים: יש כמה תפקידים ציבוריים בC-API הרמה-Cython סוגים מפורשים יותר תמורה. מה חדש בגרסת 2.2.8 / 2.3 Beta 1:
- קראש בגרסאות חדשות יותר libxml2 כאשר נע בין אלמנטי מסמכים שיש להם תכונות על צמתים XInclude הוחלפו.
- פונקצית XMLID () הייתה חסר הפרמטרים מנתח וכתובת BASE_URL אופציונליים.
- חיפוש תגים כלליים בiterparse () נשבר בPy3.
- lxml.html.open_in_browser () לא עבד בPython 3 עקב השימוש של os.tempnam. עכשיו זה לוקח פרמטר 'קידוד' אופציונאלי.
דרישות :
תגובות לא נמצא