Python Xpath Not Working?
Okay, this is starting to drive me a little bit nuts. I've tried several xml/xpath libraries for Python, and can't figure out a simple way to get a stinkin' 'title' element. The la
Solution 1:
You probably just have to take into account the namespace of the document which you're dealing with.
I'd suggest looking up how to deal with namespaces in Amara:
http://www.xml3k.org/Amara/Manual#namespaces
Edit: Using your code snippet I made some edits. I don't know what version of Amara you're using but based on the docs I tried to accommodate it as much as possible:
defview(req, url):
req.content_type = 'text/plain'
ns = {u'f' : u'http://www.w3.org/2005/Atom',
u't' : u'http://purl.org/syndication/thread/1.0'}
doc = amara.parse(urlopen(url), prefixes=ns)
req.write(str(doc.xml_xpath(u'f:title')))
Solution 2:
It is indeed the namespaces. It was a bit tricky to find in the lxml docs, but here's how you do it:
from lxml import etree
doc = etree.parse(open('index.html'))
doc.xpath('//default:title', namespaces={'default':'http://www.w3.org/2005/Atom'})
You can also do this:
title_finder = etree.ETXPath('//{http://www.w3.org/2005/Atom}title')
title_finder(doc)
And you'll get the titles back in both cases.
Post a Comment for "Python Xpath Not Working?"