Google 在 R 中通过网络抓取获取的搜索链接不符合要求的格式
Google search links obtain by webscraping in R are not in required format
我不熟悉 R 中的网络抓取,并尝试使用 R 中的搜索词 运行 google 搜索操作并自动提取链接。我使用 RCurl 和 XML 包部分成功地获得了 google 搜索结果的链接。但是,我提取的 href 链接包含不需要的信息,并且不是 "URL" 的格式。
我使用的代码是:
html <- getURL(u)
links <- xpathApply(doc, "//h3//a[@href]", xmlGetAttr, 'href')
links <- grep("http://", links, fixed = TRUE, value=TRUE)
上面的代码给了我七个链接,但是它们的格式如下:
[1] "/url?q=http://theguitarrepairworkshop.com/services/&sa=U&ved=0ahUKEwiOnNXzsr7OAhWHAMAKHX_LApYQFggmMAM&usg=AFQjCNF1r13FMHXXTsxMkbwzortiWKDALQ"
我希望他们是:
http://theguitarrepairworkshop.com/services/
如何提取上面的 href?
使用 rvest
包(它也使用 XML
包但有很多与抓取相关的方便功能)
library(rvest)
ht <- read_html('https://www.google.co.in/search?q=guitar+repair+workshop')
links <- ht %>% html_nodes(xpath='//h3/a') %>% html_attr('href')
gsub('/url\?q=','',sapply(strsplit(links[as.vector(grep('url',links))],split='&'),'[',1))
输出:
[1] "http://theguitarrepairworkshop.com/"
[2] "http://www.justdial.com/Delhi-NCR/Guitar-Repair-Services/ct-134788"
[3] "http://www.guitarrepairshop.com/"
[4] "http://www.guitarworkshoponline.com/"
[5] "http://www.guitarrepairbench.com/guitar-building-projects/guitar-workshop/guitar-workshop-project.html"
[6] "http://www.guitarservices.com/"
[7] "http://guitarworkshopglasgow.com/pages/repairs-1"
[8] "http://brightonguitarworkshop.co.uk/"
[9] "http://www.luth.org/resources/schools.html"
代码中的第四行清理文本。首先拆分结果 url (垃圾附带)wrt '&' 然后获取结果拆分的第一个元素并将 '/url?q=' 替换为空。
希望对您有所帮助!
我不熟悉 R 中的网络抓取,并尝试使用 R 中的搜索词 运行 google 搜索操作并自动提取链接。我使用 RCurl 和 XML 包部分成功地获得了 google 搜索结果的链接。但是,我提取的 href 链接包含不需要的信息,并且不是 "URL" 的格式。
我使用的代码是:
html <- getURL(u)
links <- xpathApply(doc, "//h3//a[@href]", xmlGetAttr, 'href')
links <- grep("http://", links, fixed = TRUE, value=TRUE)
上面的代码给了我七个链接,但是它们的格式如下:
[1] "/url?q=http://theguitarrepairworkshop.com/services/&sa=U&ved=0ahUKEwiOnNXzsr7OAhWHAMAKHX_LApYQFggmMAM&usg=AFQjCNF1r13FMHXXTsxMkbwzortiWKDALQ"
我希望他们是:
http://theguitarrepairworkshop.com/services/
如何提取上面的 href?
使用 rvest
包(它也使用 XML
包但有很多与抓取相关的方便功能)
library(rvest)
ht <- read_html('https://www.google.co.in/search?q=guitar+repair+workshop')
links <- ht %>% html_nodes(xpath='//h3/a') %>% html_attr('href')
gsub('/url\?q=','',sapply(strsplit(links[as.vector(grep('url',links))],split='&'),'[',1))
输出:
[1] "http://theguitarrepairworkshop.com/"
[2] "http://www.justdial.com/Delhi-NCR/Guitar-Repair-Services/ct-134788"
[3] "http://www.guitarrepairshop.com/"
[4] "http://www.guitarworkshoponline.com/"
[5] "http://www.guitarrepairbench.com/guitar-building-projects/guitar-workshop/guitar-workshop-project.html"
[6] "http://www.guitarservices.com/"
[7] "http://guitarworkshopglasgow.com/pages/repairs-1"
[8] "http://brightonguitarworkshop.co.uk/"
[9] "http://www.luth.org/resources/schools.html"
代码中的第四行清理文本。首先拆分结果 url (垃圾附带)wrt '&' 然后获取结果拆分的第一个元素并将 '/url?q=' 替换为空。
希望对您有所帮助!