2014-02-19 4 views
0

Пытается разобрать информацию из XML-файла, размещенного на сайте. Я делаю tv addon для xbmc, и моя проблема в том, что информация все включена на странице, и я только хочу анализировать разделы, как и весь сезон 1! Где он показывает только Сезон 1 в одном месте, а затем весь эпизод ниже него, а затем в сезоне 2. Я не уверен, как написать этот тип кода, чтобы вытащить только сезон 1, если вы нажмете на сезон 1! Ниже приводится то, что я получил:Разбор строк в python из файла xml

if type == 'tv_seasons': 
     match=re.compile('<Season no="(.+?)">').findall(content) 
     for seasonnumber in match:     
      item_url = new_url 
      item_title = 'Season ' + seasonnumber 
      item_id = common.CreateIdFromString(title + ' ' + item_title)    
      self.AddContent(list, indexer, common.mode_Content, item_title, item_id, 'tv_episodes', url=item_url, name=name, season=seasonnumber) 

    elif type == 'tv_episodes': 
     from entertainment.net import Net 
     net = Net() 
     content2 = net.http_GET(url).content 
     match=re.compile('<episode><epnum>.+?</epnum><seasonnum>(.+?)</seasonnum>.+?<link>(.+?)</link><title>(.+?)</title>').findall(content2) 
     for item_v_id_2, link_url, item_title in match: 
      item_v_id_2 = str(int(item_v_id_2)) 
      item_url = link_url 
      item_id = common.CreateIdFromString(name + '_season_' + season + '_episode_' + item_v_id_2) 
      self.AddContent(list, indexer, common.mode_File_Hosts, item_title, item_id, type, url=item_url, name=name, season=season, episode=item_v_id_2) 

Так что теперь я работаю с этим, но все еще не работаю для меня.

 tree2 = ET.parse(urllib.urlopen(url)) 
     root2 = tree2.getroot() 
     seasonnum = root2.findall("Show/Episodelist/Season[@no='%s']/episode/seasonnum" % season) 
     seasonnumtext = seasonnum.text 
     title = root2.findall("Show/Episodelist/Season[@no='%s']/episode/title" % season) 
     item_title = title.text 
     item_v_id_2 = str(int(seasonnumtext)) 
     item_url = url 
     item_id = common.CreateIdFromString(name + '_season_' + season + '_episode_' + item_v_id_2) 
     self.AddContent(list, indexer, common.mode_File_Hosts, item_title, item_id, type, url=item_url, name=name, season=season, episode=item_v_id_2) 
+4

're' на самом деле не лучший инструмент для xml. Есть несколько выделенных решений для этого https://wiki.python.org/moin/PythonXml – njzk2

+0

PLS добавить соответствующий фрагмент html на ваш вопрос –

+0

http://services.tvrage.com/myfeeds/search.php?key = ag6txjP0RH4m0c8sZk2j & show = black% 20sails здесь xml-файл – Mikewave

ответ

2

Я бы рекомендовал использовать Python XML Parser. Затем вы можете пересечь дерево XML аналогично словарям и спискам Python.

Смежные вопросы