这次准备试试goquery库,来爬取我房网的房价信息。首先要安装goquery,参考当go get遇到墙时,安装好库就可以开始。
比较重要的就是观察页面布局,元素特征。
观察整体页面布局
楼盘名称
楼盘位置
本次爬虫只要有房价的楼盘信息,代码如下:
package mainimport ( "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) }
爬取效果
s数据可视化效果
最后根据链接规律(大致就是:
作者:polong
链接:https://www.jianshu.com/p/ba2d5686cb81
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦