goquery方法最简单理解方法

package main

import (
   "fmt"
   "github.com/PuerkitoBio/goquery"
   "log"
   "net/http"
   "strconv"
   "strings"
)

// 电影列表地址
var url=""  //文件地址路径
//const YUMING  = "http://zuikzy.cc/"
const school =""   //需要爬取的域名

func Savedata(){
   for i:=36;i>0;i-- {  //利用for循环,重复执行
      movieurl:=strconv.Itoa(i)     //将int转化为string
      log.Println(fmt.Sprintf("【开始爬取,页码:  请求地址为 %s 】",i, movieurl))  //输出爬取链接
      res, err := http.Get(url+movieurl+".htm")  //进行字符串拼接获取html
      checkErr(err, "【爬取网站地址请求异常 】")
      if res.StatusCode != 200 {
         log.Fatalf("status code error: %d %s", res.StatusCode, res.Status)
      }
      doc, err := goquery.NewDocumentFromReader(res.Body)
      checkErr(err, "爬取成功,解析html异常")


   //


   doc.Find(".cbox ul li").Each(func(j int, tr *goquery.Selection) { //对clss名字为cbox的标签中的ul中的li 进行循环遍历

      title := tr.Find("a").Eq(0).Text()                 //标题  输出li中第一个a标签的值
      detailsLink, ok := tr.Find("a").Eq(0).Attr("href") //详情页地址  //获取li中a的链接值
      times := tr.Find("span").Eq(0).Text()              // 输出时间  //获取第一个span标签的值

      if ok != true {
         fmt.Println("获取失败")
      }
      fmt.Println(title,detailsLink,times)


      newdetailsLink:=strings.Replace(detailsLink,"..","",-1)  //将代表使用replace进行全部替换如果
      log.Println(newdetailsLink,title,times)
      fmt.Println(school+newdetailsLink)
      res,err:=http.Get(school+newdetailsLink)
      if err!=nil{
         fmt.Println("2")
      }

      dom,err:=goquery.NewDocumentFromReader(res.Body)
      dom.Find(".v_news_content p").Each(func(i int, selection *goquery.Selection) {
         text:=selection.Text()
         fmt.Println(text)

      })
   })
}
}



func main()  {
   Savedata()
}



// 错误检查
func checkErr(err error,msg string) {
   if err != nil {
      fmt.Println(msg,err)
   }
}

里面用到了很多的知识点,大家能理解就好,感谢其他网络的代码 让我学习到了很多知识点,感谢飞鸟无情,和一些列goquery开发者 

大家就看逻辑就行了 ,我只是大致修改了一下,如有不好的,请谅解,本人技术有限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值