从R中的URL抓取部分链接

时间:2016-04-18 01:45:23

标签: r string

我的角色载体中有与棒球运动员有关的部分链接:

teamplayerlinks <- c(
    "/players/i/iannech01.shtml", 
    "/players/l/lindad01.shtml",  
    "/players/c/canoro01.shtml"
)

我想在第3个/符号之后和.sthml部分之前隔离字母/数字。我想要我的结果字符串:

desiredlinks
# [1] "iannech01" "lindad01"  "canoro01"

我认为这可能是sub的工作,但经过多次试验和错误后,我很难学习逃避和角色序列。我知道可以通过两次sub调用来删除前后部分,但我宁愿完成此操作以动态处理其他链接。

提前感谢任何回复的人 - 我仍然在学习R并且每天都在努力变得更好。

3 个答案:

答案 0 :(得分:3)

你可以尝试

gsub(".*/|\\..*$", "", teamplayerlinks)
# [1] "iannech01" "lindad01"  "canoro01" 

我们有

  • .*/删除所有内容,包括最后一个/
  • |
  • \\..*$删除.之后的所有内容,从字符串
  • 开始

顺便说一句,这些看起来有点像拉赫曼棒球数据集中给出的玩家ID。如果是这样,您可以使用R中的 Lahman 包而不必刮网。它有许多棒球数据集。它可以与install.packages("Lahman")一起安装。我还写了一个包 retrosheet ,用于从retrosheet.com下载数据集。它也在CRAN上。看看吧!

答案 1 :(得分:2)

basename功能在这里很有用。

gsub("\\.shtml", "", basename(teamplayerlinks))
# [1] "iannech01" "lindad01"  "canoro01"

答案 2 :(得分:2)

这也可以在没有正则表达式的情况下完成

tools::file_path_sans_ext(basename(teamplayerlinks))
#[1] "iannech01" "lindad01"  "canoro01"