【发布时间】:2016-08-23 20:31:37
【问题描述】:
我正在尝试从 Google 搜索页面中获取所有 URL,我认为有两种方法可以做到,但我真的不知道该怎么做。
首先,我可以简单地从.r 标记中抓取它们并获取每个链接的href 属性。但是,这给了我一个很长的字符串,我必须解析它才能获取 URL。以下是必须解析的示例:
我想要的网址是:
所以我必须在 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)
})
})
}
【问题讨论】:
标签: html go screen-scraping