【问题标题】:Processing URLs which contain symbols on another language处理包含另一种语言符号的 URL
【发布时间】:2017-09-23 15:52:49
【问题描述】:

我正在开发一个网络抓取工具项目,该项目通过“RedditExtractoR”R 包从 Reddit 收集数据。 该包允许通过搜索查询获取帖子的 URL。然后我从每个 URL 的帖子中获取内容。

问题是某些 URL 包含来自另一种语言的符号,R 无法正确处理。

例如下面的 URL 返回错误: "http://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gij\363n/"

In file(con, "r") : cannot open URL 'https://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gij������n/.json?limit=500': HTTP status was '503 Service Unavailable'

原网址为:https://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gijón/

据我了解,存在一些编码问题。 R 无法处理此 URL 字符串,因为其中包含由 R 重新编码为“\363n”的“ó”符号。

那么,如何更改编码以在 R 中正确处理这种 URL?

【问题讨论】:

  • 你有没有尝试使用 URLencode() 函数?
  • 有趣!这是我从 URLencode() 得到的结果:reddit.com/r/Barca/comments/4g4fmp/… 不幸的是,URL 不起作用。也许你可以为我的案例提供一些具体的参数?

标签: r encoding web-scraping


【解决方案1】:

我不知道你是否介意为此使用一个包,但是,urltools 似乎是一个不错的起点。

library(urltools)
some_url <- "https://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gijón/"
# it could be also a vector of url's
puny_decode(some_url)

给出结果:

[1] "https://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gij\xf3n/"

如果我将它复制到浏览器,它会给我正确的页面。

很抱歉关于 URLencode() 的误导性评论,但它看起来很有希望,但它不能处理 utf 字符。

【讨论】:

  • 由于在 cmets 中的链接看起来很奇怪,我无法理解什么不能正常工作。如果您可以在您的问题中提供一个可重现的最小示例,那么对您的帮助会更容易。
  • 谢谢,但在我的例子中,RedditExtractoR 包提供了以下链接进行处理:reddit.com/r/Barca/comments/4g4fmp/…\363n/ 所以,你的代码应该是这样的:library (urltools) some_url &lt;- "http://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gij\363n/" puny_decode (some_url) 结果是一个传入的链接没有变化。我的问题是将链接的“\363n”部分解码为“ó”或 R 可以处理为 URL 的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多