房价信息爬取
程序员文章站
2022-03-11 08:40:45
这次准备试试goquery库,来爬取 "我房网" 的房价信息。首先要安装goquery,参考 "当go get遇到墙时" ,安装好库就可以开始。 比较重要的就是观察页面布局,元素特征。 本次爬虫只要有房价的楼盘信息,代码如下: ......
这次准备试试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.wofang.com/building/p/" + strconv.itoa(i) + "/" if i==1{ url= "http://www.wofang.com/building/" } 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做可视化。(本文仅供参考)