להתעדכן בחדשות משורת הפקודה
פורסמה על־ידי ozzyboy ב 30/12/2010
אני לא ממליץ לאף אחד לצרוך חדשות בצורה הזאת, אבל זה אפשרי.
משורת הפקודה שלכם בלינוקס, הקישו את הפקודה
python -c "import urllib2; import xml.dom.minidom; print('\n'.join([ item.getElementsByTagName('title')[0].childNodes[0].nodeValue for item in xml.dom.minidom.parseString(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml').read()).getElementsByTagName('item') ]))"
עריכה: גרסא מקוצרת ואלגנטית יותר (תודה מאיר):
python -c "import urllib2; from xml.etree.ElementTree import parse; print('\n'.join([title.text for title in parse(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml')).findall('/channel/item/title')]))"
והרי רשימת הכותרת מ RSS המבזקים של YNET.
ניתן לשנות את ה URL שיתאים לכל אתר אחר שמייצא RSS בצורה תקנית.
עצה קטנה: בדביאן ונגזרותיה, אם רוצים שעברית תציג כמו שצריך בטרמינל, מומלץ להשתמש ב mlterm.

meir כתב/ה
ראשית אפשר לוותר על ה-parseString וה-read ולהשתמש ב-file במקום (urlopen מחזיר דמוי קובץ) וכדי לחזור על ה-namespace לייבא רק את parse, להשתמש ב-firstChild ו-data ואז נקבל:
import urllib2; from xml.dom.minidom import parse; print('\n'.join([ item.getElementsByTagName('title')[0].firstChild.data for item in parse(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml')).getElementsByTagName('item') ]))אם רוצים גרסה פחות תקינה פוליטית, אפשר למצוא רק את title ולדלג על שני הראשונים שקישורים לערוץ:
python -c "import urllib2; from xml.dom.minidom import parse; print('\n'.join([ title.firstChild.data for title in parse(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml')).getElementsByTagName('title') ][2:]))"
ozzyboy כתב/ה
מאיר – תודה על התיקון, צודק בקשר לשימוש באוביקט שמוחזר מ urlopen כקובץ, לא חשבתי על זה
בקשר לגרסא הפחות תקינה פוליטית – אמנם זה מקצר קצת, אבל מרגיש לי פחות "נכון".
meir כתב/ה
עם גרסת ה-ElementTree שזמינה החל מפייתון 2.5, נקבל:
ython -c "import urllib2; from xml.etree.ElementTree import parse; print('\n'.join([title.text for title in parse(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml')).findall('/channel/item/title') ]))"זיו כתב/ה
הייתי חייב להגיב עם גרסה ב-PHP
גרסת PHP
ozzyboy כתב/ה
תודה על השיפורים! עדכנתי את הפוסט.
ירון שהרבני כתב/ה
עכשיו כל שנותר הוא לתקן את הבאג ב־vte (gnome-terminal) והכול יהיה מושלם ☺
להתעדכן בחדשות משורת הפקודה (bash) « עם הזמן זה יבוא כתב/ה
[...] לזה וזה, גם אני בפוסט [...]
yblogy כתב/ה
גרסת הBASH