Actually, I don't think etree has a HTML parser. And I would counter-recommend lxml if speed is an issue: BeautifulSoup takes a looooong time to parse a large document.
On Thursday, July 11, 2013 5:08:04 PM UTC+8, Fábio Santos wrote: > On 11 Jul 2013 10:04, "F.R." <anthra...@bluewin.ch> wrote: > > > > > > Hi all, > > > > > > I haven't been able to get up to speed with XML. I do examples from the > > tutorials and experiment with variations. Time and time again I fail with > > errors messages I can't make sense of. Here's the latest one. The url is > > "http://finance.yahoo.com/q?s=XIDEQ&ql=0". Ubuntu 12.04 LTS, Python 2.7.3 > > (default, Aug 1 2012, 05:16:07) [GCC 4.6.3] > > > > > > > >>> import xml.etree.ElementTree as ET > > > >>> tree = ET.parse('q?s=XIDEQ') # output of wget > > >>> http://finance.yahoo.com/q?s=XIDEQ&ql=0 > > > Traceback (most recent call last): > > > File "<pyshell#69>", line 1, in <module> > > > tree = ET.parse('q?s=XIDEQ') > > > File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1183, in parse > > > tree.parse(source, parser) > > > File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 656, in parse > > > parser.feed(data) > > > File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1643, in feed > > > self._raiseerror(v) > > > File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1507, in > > _raiseerror > > > raise err > > > ParseError: mismatched tag: line 9, column 2 > > > > > > Below first nine lines. The line numbers and the following space are > > hand-edited in. Three dots stand for sections cut out to fit long lines. > > Line 6 is a bunch of "meta" statements, all of which I show on a separate > > line each in order to preserve the angled brackets. On all lines the angled > > brackets have been preserved. The mismatched character is the slash of the > > closing tag </head>. What could be wrong with it? And if it is, what about > > fault tolerance? > > > > > > > 1 <!DOCTYPE html PUBLIC "-//W3C//DTD . . . /strict.dtd"> > > > 2 <html lang="en-US"> > > > 3 <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> > > > 4 <title>XIDEQ: Summary for EXIDE TECH NEW- Yahoo! Finance</title> > > > 5 <meta name="description" xml:space="default" content="View the basic > > XIDEQ . . . > > > 6 . . . other companies."><meta name="keywords" content="XIDEQ, EXIDE TECH > > . . ."> > > > <meta property="fb:app_id" content="118155468215844"> > > > <meta property="fb:admins" content="503762770,100001149693905"> > > > <meta property="og:type" content="company"> > > > <meta property="og:site_name" content="Yahoo! Finance"> > > > <meta property="og:title" content="Exide Technologies"> > > > <meta property="og:image" content="http://l.yimg.com/a/p/fi/31/09/00.jpg"> > > > <meta property="og:url" content="http://finance.yahoo.com/q?s=XIDEQ"> > > > <meta property="og:description" content="View the basic XIDEQ . . . > > > 7 other companies."><link rel="canonical" > > href="http://finance.yahoo.com/q?s=XIDEQ"> > > > 8 <link rel="stylesheet" href="http://l.yimg.com/zz/ . . . type="text/css"> > > > 9 </head> > > > ^ > > > Mismatch! > > > > > > Thanks for suggestions > > > > > > Frederic > > That is not XML. It is HTML. You get a mismatched tag because the <link> tag > doesn't need closing in HTML, but in XML every single tag needs closing. > > Use an HTML parser. I strongly recommend BeautifulSoup but I think etree has > an HTML parser too. I am not sure.. -- http://mail.python.org/mailman/listinfo/python-list