记一次GO爬取小说

cen9jing · · 1820 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

示意图

package main

import (
   "fmt"
   "github.com/gocolly/colly"
   "os"
)
func main() {
   url:="https://www.biqiuge.com/book/38767/"
   fileTitle := make([]string,0)
   filecontent := make([]string,0)
   c := colly.NewCollector()
   c.AllowURLRevisit = true
   c.DetectCharset = true
   contentCollector := c.Clone()
   beginRevist := false
   selects := "div[class=listmain]"
   c.OnHTML(selects, func(element *colly.HTMLElement) {
      element.ForEach("dd>a", func(_ int, eleHref *colly.HTMLElement) {
         tmpurl := eleHref.Attr("href")
         //if strings.Index(eleHref.Text,"第一章")!= -1{
            fileTitle = append(fileTitle,eleHref.Text)
            beginRevist = true
         //}
         if beginRevist{
            chapteurl := eleHref.Request.AbsoluteURL(tmpurl)
            contentCollector.Visit(chapteurl)
         }
      })
   })
   c.OnRequest(func(request *colly.Request) {
      fmt.Println("visiting",request.URL.String())
   })
   contselect := "div[class=showtxt]"
   contentCollector.OnHTML(contselect, func(elementcont *colly.HTMLElement) {
      //fmt.Printf("%s\n",elementcont.Text)
      filecontent = append(filecontent,elementcont.Text)
   })
   c.Visit(url)
   /*
   fmt.Println(len(filecontent))
   fmt.Println(len(fileTitle))
    */
   filenum := len(fileTitle)
   for i:=0;i<filenum;i++ {
      //fmt.Println(reflect.TypeOf(fileTitle[i]))
      strpath ,_:= os.Getwd()
      path := strpath + "/"+fileTitle[i]+".txt"
      f, err := os.Create(path)
      if err != nil {
         fmt.Println(err)
      }
      f.WriteString(filecontent[i])
      //fmt.Printf("正在下载%s",fileTitle[i])
      defer f.Close()

   }
}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1820 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传