关于用PyQuery解析网页报错的问题

2013-03-14 05:09:23 +08:00
 cloverfisher
用PyQuery解析一个有日文的网站,然后报错:ValueError: Unicode strings with encoding declaration are not supported.
从http://lxml.de/parsing.html网站上得知,解析的文件在parse之前是不能用utf-8的。
用requests抓的网页不都已经自动转成utf-8了么,原来都没有什么问题的啊,为啥会出问题呢?我用了decode encode什么的转成其他格式也不行。
6006 次点击
所在节点    Python
7 条回复
cloverfisher
2013-03-14 05:11:41 +08:00
timonwong
2013-03-14 08:13:06 +08:00
问题是网页中的这一行:
<?xml version="1.0" encoding="UTF-8"?>
cloverfisher
2013-03-14 13:14:44 +08:00
@timonwong 这一行有什么严重的问题么??真的没法解析本来就是utf-8的xml??那么如何解决这个问题呢
for4
2013-03-14 13:29:12 +08:00
r = requests.get('http://cn.shindanmaker.com')
用r.content 别用r.text
timonwong
2013-03-14 14:14:24 +08:00
@cloverfisher
因为是字符串是unicode类型了(转码后的了), lxml找到encoding的相关申明还会尝试转到unicode一次,自然会失败,给这些解析器的都该是raw string.

所以请使用 @for4 介绍的 r.content
cloverfisher
2013-03-14 14:25:59 +08:00
@for4 谢谢~
cloverfisher
2013-03-14 14:26:20 +08:00
@timonwong 3Q :)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/62863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX