#! /usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2
import html5lib
from html5lib import treebuilders
from lxml import etree
parser = html5lib.XHTMLParser(tree=treebuilders.getTreeBuilder("lxml"))
etree_document = parser.parse(urllib2.urlopen("http://www.mozilla-europe.org/fi/firefox/").read())/var/lib/python-support/python2.6/html5lib/inputstream.py:367: DeprecationWarning: object.__init__() takes no parameters str.__init__(self, value)
Traceback (most recent call last):
File "tv3.py", line 10, in <module>
etree_document = parser.parse(urllib2.urlopen("http://www.mozilla-europe.org/fi/firefox/").read())
...
AttributeError: 'NoneType' object has no attribute 'getroot'Mikä tuossa mättää? Koodi on lähes identtinen html5lib:n (http://code.google.com/p/html5lib/wiki/
Vika taitaa olla itse paketissa. _elementTree alustetaan arvoon None ja XhmlRootPhase yrittää lisätä siihen lapsisolmua. Juurisolmu pitäisi ehkä appendChildin sijasta luoda käsin kuten etree_lxml.py:TreeBuilder::insertRoot sen tekee.
Voitko hieman tarkentaa tuota juurisolmun luomista? En täysin ymmärrä tuota insertRoot metodia ja oikeastaan tuo kuulostaa aika pelottavalta tuo "Vika taitaa olla itse paketissa" :D
Pitäis tutustua paremmin ko. paketin sielunelämään, että osaisin sanoa, mitä tuolle pitäis tehdä. Nyt vain seurasin ja paikallistin virheen. Paketin mukana tulevassa esimerkissä xml-parserointi kyllä luonnistuu, mutta siinä käytetään oletusarvoisesti jotain muuta kuin lxml-kirjastoa. Jos toimivuus lxml:ää käyttäen on ehdottomuus niin suosittelen kääntymään authorin puoleen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.