Reputation: 891
How do you extract search keywords from Google search result page URL by Swift?
I was simply trying to get stings after "&q=" but I found out I needed to consider more complicated cases such as "https://www.google.co.jp/search?hl=ja&q=test#q=speedtest+%E4%BE%A1%E6%A0%BC&hl=ja&prmd=nsiv&tbs=qdr:d"
I would appreciate your advice.
Update: As per advised by LEO, I put this way.
if let url = NSURL(string: urlStr){
var extractedQuery = ""
if let fragment = url.fragment {
extractedQuery = fragment
} else if let query = url.query{
extractedQuery = query
}
if let queryRange = extractedQuery.rangeOfString("&q="){
let queryStartIndex = queryRange.endIndex
let queryKeyword = extractedQuery.substringFromIndex(queryStartIndex)
print(queryKeyword)
}
}
Upvotes: 3
Views: 657
Reputation: 236478
You can convert your string to NSURL and access its query and fragment properties:
if let url = NSURL(string: "https://www.google.co.jp/search?hl=ja&q=test#q=speedtest+%E4%BE%A1%E6%A0%BC&hl=ja&prmd=nsiv&tbs=qdr:d"), query = url.query, fragment = url.fragment {
print(query) // "hl=ja&q=test\n"
print(fragment) // "q=speedtest+%E4%BE%A1%E6%A0%BC&hl=ja&prmd=nsiv&tbs=qdr:d\n"
}
Upvotes: 1