我正在尝试使用 lxml 库解析网站的源代码以提取其中的文本。这是我的代码
import urllib2
from StringIO import StringIO
from lxml import html
from lxml.html.clean import Cleaner
cleaner = Cleaner(page_structure = False)
htmlsource = cleaner.clean_html(urllib2.urlopen("http://www.verycd.com/").read())
htmltree = html.parse(StringIO(htmlsource.decode("utf-8"))).getroot()
listnode = htmltree.xpath("*")
for node in listnode:
print node.text_content().strip().encode("utf-8")
当我在交互式控制台中运行代码时,结果如下所示(开发环境)
VeryCD电驴大全 - 分享互联网
用户名:
密码:记住我
免费注册
|
忘记密码?
首页 |
商城 |
专题 |
乐园 |
社区 |
电驴 |
网页游戏 |
网址大全
但是在生产环境中,所有的unicode字符都显示不正确
VeryCDçµé©´å¤§å¨ - å享äºèç½
ç¨æ·åï¼
å¯ç ï¼è®°ä½æÂ
Â
å费注å
|
å¿è®°å¯ç ï¼
é¦é¡µ |
åå |
ä¸é¢ |
ä¹å |
ç¤¾åº |
çµé©´ |
ç½é¡µæ¸¸æ |
ç½å大å¨
知道如何解决这个问题吗?
编辑
好像我在这里发现了问题。我认为 Lxml 内置 GAE 有一些问题。如果我在解析 html 之前不使用清洁器,则输出很好。
# cleaner = Cleaner(page_structure = False)
# htmlsource = cleaner.clean_html(urllib2.urlopen("http://www.verycd.com/").read())
htmlsource = urllib2.urlopen("http://www.verycd.com/").read()
htmltree = html.parse(StringIO(htmlsource.decode("utf-8"))).getroot()