我正在尝试从 Google 搜索页面中获取所有 URL,我认为有两种方法可以做到,但我真的不知道该怎么做。
首先,我可以简单地从.r标签中抓取它们并获取href每个链接的属性。但是,这给了我一个非常长的字符串,我必须解析它才能获取 URL。以下是必须解析的内容的示例:
https://www.google.com/search?sourceid=chrome-psyapi2&ion=1&espv=2&ie=UTF-8&q=mh4u%20items&oq=mh4u%20items&aqs=chrome.0.0l2j69i59j69i60j0l2.1754jnowumsay=https://youurl?qnowumsay7 .wordpress.com/2015/03/16/the-inventory-and-you-what-items-should-i-bring-mh4u/&sa=U&ei=n8NvVdSvBMOSyATSzYKoCQ&ved=0CEUQFjAL&usg=AFQjCNGyD5lJVqAq
我想要的网址是:
https://youknowumsayin.wordpress.com/2015/03/16/the-inventory-and-you-what-items-should-i-bring-mh4u/
所以我必须在https和之间创建一个字符串&sa,我不是 100% 确定该怎么做,因为 Google 给我的每个非常长的字符串都是不同的大小,所以只需使用切片并将其切割成“x”个字符就不会'工作。
其次,在 Google 搜索中的每个链接下方都有绿色文本的 URL。右键单击它并检查元素给出:(cite class="_Rm"在 V 形之间)我不知道如何使用 goquery 查找,因为cite使用我的小函数查找只会给我更多长字符串。
这是我的小函数,它目前没有解析就执行第一个选项,并为我提供一长串文本,将我带到搜索页面:
func GetUrls(url string) {
doc, err := goquery.NewDocument(url)
if err != nil {
panic(err)
}
doc.Find(".r").Each(func(i int, s *goquery.Selection) {
doc.Find(".r a").Each(func(i int, s *goquery.Selection) {
Link, _ := s.Attr("href")
Link = url + Link
fmt.Printf("link is [%s]\n", Link)
})
})
}
相关分类