首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何结合使用unicode和enlive进行web抓取

如何结合使用unicode和enlive进行web抓取
EN

Stack Overflow用户
提问于 2012-05-18 01:46:31
回答 2查看 639关注 0票数 1

我正在尝试抓取一些需要unicode支持的网站。例如,我试图获取这本书的标题,但它返回的是乱码:

代码语言:javascript
复制
(-> "http://www.brill.nl/publications/evliya-celebis-book-travels" 
      java.net.URL. enlive/html-resource
 (enlive/select [:h1#page-title]) first :content)

尝试抓取一个阿拉伯语站点的结果是?到处都是。

代码语言:javascript
复制
(enlive/html-resource (java.net.URL. "http://www.aljazeera.net/portal"))

我不确定我应该如何激活unicode支持。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-18 03:13:04

Enlive支持unicode,因为它使用Java字符串。我在我的电脑上运行了你的第一个例子,得到了这个结果:

代码语言:javascript
复制
(Evliyā Çelebi's Book of Travels)

也许你正在使用的字体没有你想要显示的点代码的字形?

票数 2
EN

Stack Overflow用户

发布于 2012-05-20 19:00:34

enlive的作者克里斯托夫·格兰德( Christophe Grand )对reply on the Enlive email group来说已经足够了。他的建议很有见地。我已经复制了下面的电子邮件:

你好,

Enlive不是(也不包括)功能齐全的HTTP代理。当您将java.net.URL传递给html资源时,它将在其上调用.getContent,获取一个InputStream,然后假定为UTF-8。但是,如果您知道实际的编码,则可以执行以下操作:

代码语言:javascript
复制
(-> "http://www.brill.nl/publications/evliya-celebis-book-travels" java.net.URL.
  .getContent (java.io.InputStreamReader. "ENCODING GOES HERE")
enlive/html-resource
 (en/select [:h1#page-title]) first :content)

或使用代理库,它将检测正确的编码,并将生成的阅读器传递给html-resource。

hth,

Christophe

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10640792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档