2011-05-19 55 views
0

我正在努力编码和lxml。我正在阅读某个网站的某些html,并希望使用lxml搜索包含文本的£标记。我可以搜索标签(h3)并获取打印的内容,但如果我尝试在文本内搜索英镑符号,我会得到一个UnicodeDecodeError。我需要做后者,因为这是更普遍的情况。用lxml搜索£标记

tree = lxml.html.fromstring(html) 

# prints #£13,999 
print tree.cssselect('h3')[0].text_content().encode("utf-8") 

# generates "UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 0: ordinal not in range(128)" 

# prints £13,999 
print tree.cssselect('h3:contains(u"\xa3")')[0].text_content().encode('utf-8') 

任何你可以提供的肝素都会非常感谢......我尝试了几种不同的东西,这让我疯狂!

+1

请张贴'html'的片段,包含'h3'标签和''£迹象。 – unutbu 2011-05-19 12:28:48

回答

0

我不既无蟒蛇也不LXML经历,但问题可能是因为“H3”字符串不是unicode字符串该字节a3本身不是一个Unicode代码点。你可以尝试更换:

'h3:contains(u"\xa3")' 

有:

u'h3:contains("\u00a3")' 
+0

工作。谢谢! – alan 2011-05-22 14:28:40