我正在尝试从不同的网站中删除图片来源。我使用rvest
来做到这一点。我遇到的问题是我有一个包含源的向量string
,但我需要从中提取源。以下是前几个条目:
> string
{xml_nodeset (100)}
[1] <td class="no-wrap currency-name" data-sort="Bitcoin">\n<img src="https://s2.coinmarketc ...
[2] <td class="no-wrap currency-name" data-sort="Ethereum">\n<img src="https://s2.coinmarket ...
[3] <td class="no-wrap currency-name" data-sort="Ripple">\n <img src="https://s2.coinmarketc ...
我需要的基本上是src="
之后的部分,所以对于第一个"https://s2.coinmarketcap.com/static/img/coins/16x16/1.png"
(控制台不会显示完整的字符串,但这会显示在点...
之后之后还有更多的东西。)
任何帮助都会受到赞赏,因为我有点卡在这里。
答案 0 :(得分:2)
你可以这样做:
library(rvest)
read_html("https://coinmarketcap.com/coins/")%>%
html_nodes("td img")%>%html_attr("src")
[1] "https://s2.coinmarketcap.com/static/img/coins/16x16/1.png"
[2] "https://s2.coinmarketcap.com/generated/sparklines/web/7d/usd/1.png"
[3] "https://s2.coinmarketcap.com/static/img/coins/16x16/1027.png"
[4] "https://s2.coinmarketcap.com/generated/sparklines/web/7d/usd/1027.png"
[5] "https://s2.coinmarketcap.com/static/img/coins/16x16/52.png"
[6] "https://s2.coinmarketcap.com/generated/sparklines/web/7d/usd/52.png"
[7] "https://s2.coinmarketcap.com/static/img/coins/16x16/1831.png"
[8] "https://s2.coinmarketcap.com/generated/sparklines/web/7d/usd/1831.png"
:
:
:
:
答案 1 :(得分:1)
正如评论中所指出的,正则表达式应该这样做:
myhtml <- gsub('^.*https://\\s*|\\s*.png.*$', "", string)
myhtml <- paste0("https://", myhtml, ".png")
第一行将提取https://
和.png
之间包含的字符串部分,第二行会将它们粘贴回字符串中,以便拥有有效的来源,即使用{{最后1}}和https://
。