Go爬虫学习-----goquery

Posted lydiammzuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go爬虫学习-----goquery相关的知识,希望对你有一定的参考价值。

菜鸟一个,以前没学过爬虫,今天恰好在浏览链家,想对长沙的价格有一个了解,所以用go的一个包goquery学习了一下怎么爬虫。

goquery包的基本使用可以参考链接:https://www.cnblogs.com/diegodu/p/5761961.html

对于爬虫,总体思路是:

1、明确URL(请求的地址,明确爬什么)

2、发送请求,获取响应数据

3、保存响应数据、提取有用信息

4、处理数据(存储、使用)

下面是我爬取网页:https://cs.fang.lianjia.com/loupan/nht1nhs1pg1/ 的代码,记录一下:

技术图片
 1 package main
 2 
 3 import (
 4     "fmt"
 5     "log"
 6     "strconv"
 7     "strings"
 8 
 9     "github.com/PuerkitoBio/goquery"
10 )
11 
12 func ExampleScrape(url string) {
13     doc, err := goquery.NewDocument(url)
14     if err != nil {
15         log.Fatal(err)
16     }
17 
18     items := doc.Find("div.resblock-desc-wrapper")
19     items.Each(func(_ int, sel *goquery.Selection) {
20         /* 获取楼盘名字 */
21         name := sel.Find("div.resblock-name").Find("a.name").Text()
22 
23         /* 获取位置信息 */
24         location := sel.Find("div.resblock-location").Find("span").Text() //位置信息
25 
26         /* 获取面积 */
27         area := sel.Find("div.resblock-area").Text()
28         area = strings.Replace(area, " ", "", -1)  // 去除空格
29         area = strings.Replace(area, "
", "", -1) // 去除换行符
30 
31         /* 获取单价 */
32         price := sel.Find("div.resblock-price").Find("div.main-price").Find("span.number").Text()
33         total := sel.Find("div.resblock-price").Find("div.second").Text()
34 
35         fmt.Printf("楼盘名字: %s, 位置信息:%s, %s, 单价:%s元/平, %s
", name, location, area, price, total)
36     })
37 }
38 
39 func main() {
40     maxPageNum := 10
41     url := "https://cs.fang.lianjia.com/loupan/nht1nhs1pg"
42     for i := 1; i <= maxPageNum; i++ {
43         fmt.Printf("正在处理第 %d 页的数据:
", i)
44         url = url + strconv.Itoa(i)
45         ExampleScrape(url)
46         fmt.Printf("

")
47     }
48 
49 }
View Code

运行结果如下(我大长沙的房价真是良心啊):

正在处理第 1 页的数据:
楼盘名字: 中海熙湾, 位置信息:岳麓梅溪湖南岸, 建面114-200㎡, 单价:18000元/平, 总价205.2万/套
楼盘名字: 新城和樾, 位置信息:开福金霞, 建面115-144㎡, 单价:9700元/平, 总价134万/套
楼盘名字: 美的翰城, 位置信息:望城望城区, 建面88-127㎡, 单价:6200元/平, 总价72万/套
楼盘名字: 蓝湾国际广场, 位置信息:天心书院路, , 单价:15000元/平,
楼盘名字: 水墨林溪, 位置信息:天心新开铺, 建面75-116㎡, 单价:9000元/平, 总价105.2万/套
楼盘名字: 五一钻界海上银座, 位置信息:芙蓉松桂园, 建面32-70㎡, 单价:15000元/平, 总价48.5万/套
楼盘名字: 明昇壹城, 位置信息:雨花武广新城, 建面38-189㎡, 单价:13880元/平, 总价53.2万/套
楼盘名字: 金轮星光名座, 位置信息:雨花武广新城, 建面36-91㎡, 单价:9078元/平, 总价55.5万/套
楼盘名字: 望兴西西里, 位置信息:岳麓商学院, , 单价:12000元/平,
楼盘名字: 晟通牡丹舸, 位置信息:岳麓梅溪湖北岸, 建面231-248㎡, 单价:18000元/平, 总价415.8万/套

正在处理第 2 页的数据:
楼盘名字: 长沙院子, 位置信息:长沙县长沙县, 建面179㎡, 单价:8000元/平, 总价139.6万/套
楼盘名字: 高铁吾悦广场, 位置信息:雨花武广新城, 建面140㎡, 单价:10600元/平, 总价145万/套
楼盘名字: 和泓桃李春风, 位置信息:长沙县星沙其他, 建面88-127㎡, 单价:8500元/平, 总价71.2万/套
楼盘名字: 恒大半山悦府, 位置信息:岳麓岳麓其他, 建面95-136㎡, 单价:8200元/平, 总价77.9万/套
楼盘名字: 敏捷珑玥府, 位置信息:长沙县长沙县, 建面96-129㎡, 单价:7600元/平, 总价74.2万/套
楼盘名字: 南璟滨江书苑, 位置信息:望城望城区, 建面94-139㎡, 单价:5900元/平, 总价55.9万/套
楼盘名字: 润和谷山郡, 位置信息:望城望城区, 建面44-178㎡, 单价:8000元/平, 总价35.6万/套
楼盘名字: 福晟钱隆公馆, 位置信息:天心暮云, 建面121-142㎡, 单价:6700元/平, 总价81.07万/套
楼盘名字: 湾田望江府, 位置信息:望城望城区, 建面105-137㎡, 单价:6000元/平, 总价62万/套
楼盘名字: 长房雍景湾, 位置信息:开福福元西路, 建面120-143㎡, 单价:12300元/平, 总价147.6万/套

正在处理第 3 页的数据:
楼盘名字: 中海熙湾, 位置信息:岳麓梅溪湖南岸, 建面114-200㎡, 单价:18000元/平, 总价205.2万/套
楼盘名字: 新城和樾, 位置信息:开福金霞, 建面115-144㎡, 单价:9700元/平, 总价134万/套
楼盘名字: 美的翰城, 位置信息:望城望城区, 建面88-127㎡, 单价:6200元/平, 总价72万/套
楼盘名字: 蓝湾国际广场, 位置信息:天心书院路, , 单价:15000元/平,
楼盘名字: 水墨林溪, 位置信息:天心新开铺, 建面75-116㎡, 单价:9000元/平, 总价105.2万/套
楼盘名字: 五一钻界海上银座, 位置信息:芙蓉松桂园, 建面32-70㎡, 单价:15000元/平, 总价48.5万/套
楼盘名字: 明昇壹城, 位置信息:雨花武广新城, 建面38-189㎡, 单价:13880元/平, 总价53.2万/套
楼盘名字: 金轮星光名座, 位置信息:雨花武广新城, 建面36-91㎡, 单价:9078元/平, 总价55.5万/套
楼盘名字: 望兴西西里, 位置信息:岳麓商学院, , 单价:12000元/平,
楼盘名字: 晟通牡丹舸, 位置信息:岳麓梅溪湖北岸, 建面231-248㎡, 单价:18000元/平, 总价415.8万/套

正在处理第 4 页的数据:
楼盘名字: 中海熙湾, 位置信息:岳麓梅溪湖南岸, 建面114-200㎡, 单价:18000元/平, 总价205.2万/套
楼盘名字: 新城和樾, 位置信息:开福金霞, 建面115-144㎡, 单价:9700元/平, 总价134万/套
楼盘名字: 美的翰城, 位置信息:望城望城区, 建面88-127㎡, 单价:6200元/平, 总价72万/套
楼盘名字: 蓝湾国际广场, 位置信息:天心书院路, , 单价:15000元/平,
楼盘名字: 水墨林溪, 位置信息:天心新开铺, 建面75-116㎡, 单价:9000元/平, 总价105.2万/套
楼盘名字: 五一钻界海上银座, 位置信息:芙蓉松桂园, 建面32-70㎡, 单价:15000元/平, 总价48.5万/套
楼盘名字: 明昇壹城, 位置信息:雨花武广新城, 建面38-189㎡, 单价:13880元/平, 总价53.2万/套
楼盘名字: 金轮星光名座, 位置信息:雨花武广新城, 建面36-91㎡, 单价:9078元/平, 总价55.5万/套
楼盘名字: 望兴西西里, 位置信息:岳麓商学院, , 单价:12000元/平,
楼盘名字: 晟通牡丹舸, 位置信息:岳麓梅溪湖北岸, 建面231-248㎡, 单价:18000元/平, 总价415.8万/套

正在处理第 5 页的数据:
楼盘名字: 中海熙湾, 位置信息:岳麓梅溪湖南岸, 建面114-200㎡, 单价:18000元/平, 总价205.2万/套
楼盘名字: 新城和樾, 位置信息:开福金霞, 建面115-144㎡, 单价:9700元/平, 总价134万/套
楼盘名字: 美的翰城, 位置信息:望城望城区, 建面88-127㎡, 单价:6200元/平, 总价72万/套
楼盘名字: 蓝湾国际广场, 位置信息:天心书院路, , 单价:15000元/平,
楼盘名字: 水墨林溪, 位置信息:天心新开铺, 建面75-116㎡, 单价:9000元/平, 总价105.2万/套
楼盘名字: 五一钻界海上银座, 位置信息:芙蓉松桂园, 建面32-70㎡, 单价:15000元/平, 总价48.5万/套
楼盘名字: 明昇壹城, 位置信息:雨花武广新城, 建面38-189㎡, 单价:13880元/平, 总价53.2万/套
楼盘名字: 金轮星光名座, 位置信息:雨花武广新城, 建面36-91㎡, 单价:9078元/平, 总价55.5万/套
楼盘名字: 望兴西西里, 位置信息:岳麓商学院, , 单价:12000元/平,
楼盘名字: 晟通牡丹舸, 位置信息:岳麓梅溪湖北岸, 建面231-248㎡, 单价:18000元/平, 总价415.8万/套

正在处理第 6 页的数据:
楼盘名字: 中海熙湾, 位置信息:岳麓梅溪湖南岸, 建面114-200㎡, 单价:18000元/平, 总价205.2万/套
楼盘名字: 新城和樾, 位置信息:开福金霞, 建面115-144㎡, 单价:9700元/平, 总价134万/套
楼盘名字: 美的翰城, 位置信息:望城望城区, 建面88-127㎡, 单价:6200元/平, 总价72万/套
楼盘名字: 蓝湾国际广场, 位置信息:天心书院路, , 单价:15000元/平,
楼盘名字: 水墨林溪, 位置信息:天心新开铺, 建面75-116㎡, 单价:9000元/平, 总价105.2万/套
楼盘名字: 五一钻界海上银座, 位置信息:芙蓉松桂园, 建面32-70㎡, 单价:15000元/平, 总价48.5万/套
楼盘名字: 明昇壹城, 位置信息:雨花武广新城, 建面38-189㎡, 单价:13880元/平, 总价53.2万/套
楼盘名字: 金轮星光名座, 位置信息:雨花武广新城, 建面36-91㎡, 单价:9078元/平, 总价55.5万/套
楼盘名字: 望兴西西里, 位置信息:岳麓商学院, , 单价:12000元/平,
楼盘名字: 晟通牡丹舸, 位置信息:岳麓梅溪湖北岸, 建面231-248㎡, 单价:18000元/平, 总价415.8万/套

正在处理第 7 页的数据:
楼盘名字: 中海熙湾, 位置信息:岳麓梅溪湖南岸, 建面114-200㎡, 单价:18000元/平, 总价205.2万/套
楼盘名字: 新城和樾, 位置信息:开福金霞, 建面115-144㎡, 单价:9700元/平, 总价134万/套
楼盘名字: 美的翰城, 位置信息:望城望城区, 建面88-127㎡, 单价:6200元/平, 总价72万/套
楼盘名字: 蓝湾国际广场, 位置信息:天心书院路, , 单价:15000元/平,
楼盘名字: 水墨林溪, 位置信息:天心新开铺, 建面75-116㎡, 单价:9000元/平, 总价105.2万/套
楼盘名字: 五一钻界海上银座, 位置信息:芙蓉松桂园, 建面32-70㎡, 单价:15000元/平, 总价48.5万/套
楼盘名字: 明昇壹城, 位置信息:雨花武广新城, 建面38-189㎡, 单价:13880元/平, 总价53.2万/套
楼盘名字: 金轮星光名座, 位置信息:雨花武广新城, 建面36-91㎡, 单价:9078元/平, 总价55.5万/套
楼盘名字: 望兴西西里, 位置信息:岳麓商学院, , 单价:12000元/平,
楼盘名字: 晟通牡丹舸, 位置信息:岳麓梅溪湖北岸, 建面231-248㎡, 单价:18000元/平, 总价415.8万/套

正在处理第 8 页的数据:
楼盘名字: 中海熙湾, 位置信息:岳麓梅溪湖南岸, 建面114-200㎡, 单价:18000元/平, 总价205.2万/套
楼盘名字: 新城和樾, 位置信息:开福金霞, 建面115-144㎡, 单价:9700元/平, 总价134万/套
楼盘名字: 美的翰城, 位置信息:望城望城区, 建面88-127㎡, 单价:6200元/平, 总价72万/套
楼盘名字: 蓝湾国际广场, 位置信息:天心书院路, , 单价:15000元/平,
楼盘名字: 水墨林溪, 位置信息:天心新开铺, 建面75-116㎡, 单价:9000元/平, 总价105.2万/套
楼盘名字: 五一钻界海上银座, 位置信息:芙蓉松桂园, 建面32-70㎡, 单价:15000元/平, 总价48.5万/套
楼盘名字: 明昇壹城, 位置信息:雨花武广新城, 建面38-189㎡, 单价:13880元/平, 总价53.2万/套
楼盘名字: 金轮星光名座, 位置信息:雨花武广新城, 建面36-91㎡, 单价:9078元/平, 总价55.5万/套
楼盘名字: 望兴西西里, 位置信息:岳麓商学院, , 单价:12000元/平,
楼盘名字: 晟通牡丹舸, 位置信息:岳麓梅溪湖北岸, 建面231-248㎡, 单价:18000元/平, 总价415.8万/套

正在处理第 9 页的数据:
楼盘名字: 中海熙湾, 位置信息:岳麓梅溪湖南岸, 建面114-200㎡, 单价:18000元/平, 总价205.2万/套
楼盘名字: 新城和樾, 位置信息:开福金霞, 建面115-144㎡, 单价:9700元/平, 总价134万/套
楼盘名字: 美的翰城, 位置信息:望城望城区, 建面88-127㎡, 单价:6200元/平, 总价72万/套
楼盘名字: 蓝湾国际广场, 位置信息:天心书院路, , 单价:15000元/平,
楼盘名字: 水墨林溪, 位置信息:天心新开铺, 建面75-116㎡, 单价:9000元/平, 总价105.2万/套
楼盘名字: 五一钻界海上银座, 位置信息:芙蓉松桂园, 建面32-70㎡, 单价:15000元/平, 总价48.5万/套
楼盘名字: 明昇壹城, 位置信息:雨花武广新城, 建面38-189㎡, 单价:13880元/平, 总价53.2万/套
楼盘名字: 金轮星光名座, 位置信息:雨花武广新城, 建面36-91㎡, 单价:9078元/平, 总价55.5万/套
楼盘名字: 望兴西西里, 位置信息:岳麓商学院, , 单价:12000元/平,
楼盘名字: 晟通牡丹舸, 位置信息:岳麓梅溪湖北岸, 建面231-248㎡, 单价:18000元/平, 总价415.8万/套

正在处理第 10 页的数据:
楼盘名字: 中海熙湾, 位置信息:岳麓梅溪湖南岸, 建面114-200㎡, 单价:18000元/平, 总价205.2万/套
楼盘名字: 新城和樾, 位置信息:开福金霞, 建面115-144㎡, 单价:9700元/平, 总价134万/套
楼盘名字: 美的翰城, 位置信息:望城望城区, 建面88-127㎡, 单价:6200元/平, 总价72万/套
楼盘名字: 蓝湾国际广场, 位置信息:天心书院路, , 单价:15000元/平,
楼盘名字: 水墨林溪, 位置信息:天心新开铺, 建面75-116㎡, 单价:9000元/平, 总价105.2万/套
楼盘名字: 五一钻界海上银座, 位置信息:芙蓉松桂园, 建面32-70㎡, 单价:15000元/平, 总价48.5万/套
楼盘名字: 明昇壹城, 位置信息:雨花武广新城, 建面38-189㎡, 单价:13880元/平, 总价53.2万/套
楼盘名字: 金轮星光名座, 位置信息:雨花武广新城, 建面36-91㎡, 单价:9078元/平, 总价55.5万/套
楼盘名字: 望兴西西里, 位置信息:岳麓商学院, , 单价:12000元/平,
楼盘名字: 晟通牡丹舸, 位置信息:岳麓梅溪湖北岸, 建面231-248㎡, 单价:18000元/平, 总价415.8万/套

以上是关于Go爬虫学习-----goquery的主要内容,如果未能解决你的问题,请参考以下文章

go语言解析网页利器goquery使用教程(爬虫必备)

golang goquery selector(选择器) 示例大全

Go——goquery简单Demo

Golang 网络爬虫框架gocolly/colly 二 jQuery selector

Golang 网络爬虫框架gocolly/colly 一

go语言,第三方包相对路径导入包引起的问题及解决方案(goquery)