2017-09-22 41 views
0

我正在從事一個通過「RedditExtractoR」R軟件包從Reddit收集數據的網絡抓取工具項目。 該軟件包允許通過搜索查詢獲取帖子的網址。然後我從每個網址的帖子中獲取內容。處理包含另一種語言符號的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' 

原始URL是:https://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gijón/

正如我理解有一些編碼的問題。 R不能處理這個URL的字符串,因爲裏面有包含「?」的符號,用R來重新編碼爲「\ 363n」。

那麼,如何改變編碼在R中正確處理這種URL呢?

+0

你嘗試使用函數URLencode()嗎? – AaronP

+0

有趣! 這裏的結果這是我從urlencode()來獲得: http://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gij%F3n/ 不幸的是,URL doen't工作。也許你可以爲我的情況建議一些特定的參數? – Michael

回答

0

我不知道你是否介意使用一個包,但是,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字符。

+0

由於在評論中的鏈接有點奇怪,我不明白什麼不工作,因爲它應該。如果你可以在你的問題中提供一個可重現的最小例子,那將會更容易幫助你。 – AaronP

+0

謝謝,但在我的情況下,RedditExtractoR軟件包提供以下鏈接進行處理:http://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gij\363n/ 因此,您的代碼應該看起來像此: '庫(urltools) SOME_URL < - 「http://www.reddit.com/r/Barca/comments/4g4fmp/match_thread_fc_barcelona_vs_sporting_de_gij\363n/」 puny_decode(SOME_URL)' 結果是傳入鏈接沒有變化。 我的問題是將鏈接的「\ 363n」部分解碼爲「ó」或R可以作爲URL處理的內容。 – Michael

相關問題