2014-03-14 26 views
-2

替換URL的一部分目前我的網站如何利用R

http://www.amazon.com/Apple-generation-Tablet-processor-White/product-reviews/B0047DVWLW/ref=cm_cr_pr_btm_link_2?ie=UTF8&pageNumber=1&showViewpoints=0&sortBy=bySubmissionDateDescending

我想更換這部分

PAGENUMBER = 1

要與序列代替的數字,如1,2,3,..... n

我知道我需要使用paste函數。但是我可以找到這個號碼並將其替換嗎?

+0

如果你解決了你自己的問題,你應該輸入解決方案作爲答案,而不是附加到你的問題。如果您覺得這是最好的解決方案,將其標記爲可接受的解決方案沒有任何問題。 – jbaums

回答

0

簡單的辦法就是將字符串分割到

var part1 = " http://www.amazon.com/Apple-generation-Tablet-processor-White/product-reviews/B0047DVWLW/ref=cm_cr_pr_btm_link_2?ie=UTF8&pageNumber="; 

var number =1; 

var part2 = "&showViewpoints=0&sortBy=bySubmissionDateDescending" 

link = part1+number+part2 

另一種方法是使用string.replace("pageNumber=1","pageNumber=2");

和另一種選擇是使用正則表達式,但即時通訊不好與你會不得不做一些谷歌上搜索。

+0

謝謝。其實我試圖使用粘貼兩次。 – clickpn

+0

不知道爲什麼這是公認的解決方案 - 它不是R代碼... – jbaums

+0

因爲我自己想。他或她的想法與我相似。我應該仔細看。 – clickpn

2

您可以從httr包中使用該功能parseQueryStringshiny包或parse_urlbuild_url

require(shiny) 
testURL <- "<http://www.amazon.com/Apple-generation-Tablet-processor-White/product-reviews/B0047DVWLW/ref=cm_cr_pr_btm_link_2?ie=UTF8&pageNumber=1&showViewpoints=0&sortBy=bySubmissionDateDescending>" 
parseURL <- parseQueryString(testURL) 
parseURL$pageNumber <- 4 
newURL <- paste(names(parseURL), parseURL, sep = "=", collapse="&") 

require(httr) 
testURL <- "<http://www.amazon.com/Apple-generation-Tablet-processor-White/product-reviews/B0047DVWLW/ref=cm_cr_pr_btm_link_2?ie=UTF8&pageNumber=1&showViewpoints=0&sortBy=bySubmissionDateDescending>" 
parseURL <- parse_url(testURL) 
parseURL$query$pageNumber <- 4 
newURL <- build_url(parseURL) 
+0

運行代碼時,請從URL – jdharrison

1

試試這個:

# inputs 
URL1 <- "...whatever...&pageNumber=1" 
i <- 2 

URL2 <- sub("pageNumber=1", paste0("pageNumber=", i), URL1) 

或使用perl的零寬度正則表達式:

URL2 <- sub("(?<=pageNumber=)1", i, URL1, perl = TRUE) 

如果我們知道沒有1日前pageNumber,比如這裏的情況下,那麼它簡化爲:

URL2 <- sub(1, i, URL1) 
+0

中刪除尖括號「<....>」,謝謝您的幫助! – clickpn

1

另一種非常簡單的方法是使用sprintf

sprintf('http://www.amazon.com/Apple-generation-Tablet-processor-White/product-reviews/B0047DVWLW/ref=cm_cr_pr_btm_link_2?ie=UTF8&pageNumber=%s&showViewpoints=0&sortBy=bySubmissionDateDescending', 
     1:10) 

在上面的代碼,作爲第一個參數提供該串中的%s通過在第二個參數中提供的向量的每個元素替換,反過來。

有關這個非常方便的字符串操作函數的更多細節,請參閱?sprintf

0

我現在知道了,代碼就在這裏。

listurl<-paste("http://rads.stackoverflow.com/amzn/click/B0047DVWLW",1:218) 
ipadlisturl<-paste(listurl,"&showViewpoints=0&sortBy=bySubmissionDateDescending")