我正在使用Scrapy进行网页抓取。网站在<code>
标记之间嵌入了json,如:
<code id="content" style="display:none;"><!--{"content": "text1",...,..., "compute": "text2"}--></code>
使用xpath,我能够在<code>
标记内提取评论。使用:
hxs.select("//code[@id='content']/comment()").extract()
在标记评论字符后,内容为content = "{"content": "text1",...,..., "compute": "text2"}"
使用json.loads(内容)构建json时,出现"ValueError: No JSON object could be decoded"
错误。
此外,str(内容)抛出:
"UnicodeEncodeError: 'ascii' codec can't encode characters in position 106512-106513: ordinal not in range(128)"
106512处的值为'\xa7'
提前致谢。
答案 0 :(得分:2)
str(content)
无法使用非ASCII字符,这本身就不是问题。 content.encode('utf-8')
如果您想要的是字节字符串(虽然将其打印到控制台是另一种问题(PrintFails),但是如果您只想向我们展示变量中的内容,请{1}}获取Python语法表示。
repr(comment)
表示No JSON object could be decoded
甚至无法在字符串的开头找到类似JSON的内容,因此请查看该json.loads
字符串的前面以查看是否repr()
之前有任何杂散字符或控制代码。
答案 1 :(得分:0)
json中的字符串似乎是iso8859或Windows-1252。 \ xa7是其中一种编码中的§,而\ xc2 \ xa7是utf-8中的§。