房价信息爬取
- 作者: 寻找我的弱点
- 来源: 51数据库
- 2021-10-12
??这次准备试试goquery库,来爬取的房价信息。首先要安装goquery,参考当go get遇到墙时,安装好库就可以开始。
??比较重要的就是观察页面布局,元素特征。
??本次爬虫只要有房价的楼盘信息,代码如下:
package main import ( "fmt" "strconv" "time" "github.com/puerkitobio/goquery" "log" "bytes" "encoding/csv" "os" ) func p() { a:=0 filename := "wofang.csv" buf := new(bytes.buffer) r2 := csv.newwriter(buf) for i := 1; i <=202; i++ { fmt.println("正在抓取第" + strconv.itoa(i) + "页......") url := "http://www.51sjk.com/Upload/Articles/1/0/277/277730_20210708080605735.jpg" + strconv.itoa(i) + "/" if i==1{ url= "http://www.51sjk.com/Upload/Articles/1/0/277/277730_20210708080605829.jpg" } doc, err := goquery.newdocument(url) if err != nil { log.fatal(err) } doc.find(".m ul li").each(func(i int, s *goquery.selection) { name:= s.find(".title a").text() location:= s.find(".time").text() price:=s.find(".sale-price font").text() if price!="" { a++ s := make([]string,3) s[0] = name s[1] = price s[2] = location r2.write(s) r2.flush() fmt.printf("%s,%s,%s\n", name,price, location) } }) } fout,err := os.create(filename) defer fout.close() if err != nil { fmt.println(filename,err) return } fout.writestring(buf.string()) fmt.print(a) } func main() { t1 := time.now() // get current time p() elapsed := time.since(t1) fmt.println("") fmt.println("爬虫结束,总共耗时: ", elapsed) }
??最后根据链接规律(大致就是:" + 地市键值+ "-te_住宅/",键值用的比较笨的方法手动一个个点出来的)爬一下各地市的信息并用echart做可视化。(本文仅供参考)
推荐阅读