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

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

所以请使用 @for4 介绍的 r.content
cloverfisher
2013 年 3 月 14 日
@for4 谢谢~
cloverfisher
2013 年 3 月 14 日
@timonwong 3Q :)

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

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

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

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

© 2021 V2EX