2014-01-27 2 views
1

Im пытается получить текст с веб-страницы с Python 3.3, а затем выполнить поиск по этому тексту для определенных строк. Когда я нахожу соответствующую строку, мне нужно сохранить следующий текст. Например, я беру эту страницу: http://gatherer.wizards.com/Pages/Card/Details.aspx?name=Dark%20Prophecy , и мне нужно сохранить текст после каждой категории (текст карты, редкость и т. Д.) В информации о карте. В настоящее время я использую красивый суп, но get_text вызывает UnicodeEncodeError и не возвращает итерируемый объект. Вот соответствующий код:HTML разбор текста в Python 3

   urlStr = urllib.request.urlopen('http://gatherer.wizards.com/Pages/Card/Details.aspx?name=' + cardName).read() 

       htmlRaw = BeautifulSoup(urlStr) 

       htmlText = htmlRaw.get_text 

       for line in htmlText: 
        line = line.strip() 
        if "Converted Mana Cost:" in line: 
         cmc = line.next() 
         message += "*Converted Mana Cost: " + cmc +"* \n\n" 
        elif "Types:" in line: 
         type = line.next() 
         message += "*Type: " + type +"* \n\n" 
        elif "Card Text:" in line: 
         rulesText = line.next() 
         message += "*Rules Text: " + rulesText +"* \n\n" 
        elif "Flavor Text:" in line: 
         flavor = line.next() 
         message += "*Flavor Text: " + flavor +"* \n\n" 
        elif "Rarity:" in line: 
         rarity == line.next() 
         message += "*Rarity: " + rarity +"* \n\n" 

ответ

1

рассмотреть возможность использования lxml and xpath вместо этого, вы тогда будете в состоянии делать такие вещи, как:

>>> from lxml import html 
>>> root = html.parse("http://gatherer.wizards.com/Pages/Card/Details.aspx?name=Dark%20Prophecy") 
>>> root.xpath('//div[contains(text(), "Flavor Text")]/following-sibling::div/div/i/text()') 
['When the bog ran short on small animals, Ekri turned to the surrounding farmlands.'] 
+0

Как установить это на окна? Инструкции на веб-сайте, похоже, говорят только для загрузки, но это не работает – CrazyBurrito

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