从 Google 搜索结果页面中提取 URL

我正在尝试从 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)

        })


    })


}


杨__羊羊
浏览 394回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go