ma6254 / FictionDown

小说下载|小说爬取|起点|笔趣阁|导出Markdown|导出txt|转换epub|广告过滤|自动校对
GNU General Public License v3.0
709 stars 140 forks source link

加个规则 #5

Closed challengeYY closed 4 years ago

challengeYY commented 5 years ago

www.zhuishubang.com

Code

package site

import (
    "fmt"
    "io"
    "net/url"
    "strings"

    "github.com/antchfx/htmlquery"
    "github.com/ma6254/FictionDown/store"
    "golang.org/x/text/encoding/simplifiedchinese"
    "golang.org/x/text/transform"
)

type wwwZhuishubangCom struct {
}

func (b *wwwZhuishubangCom) BookInfo(body io.Reader) (s *store.Store, err error) {
    body = transform.NewReader(body, simplifiedchinese.GBK.NewDecoder())
    doc, err := htmlquery.Parse(body)
    if err != nil {
        return
    }

    s = &store.Store{}

    // Book Name
    node_title := htmlquery.Find(doc, `//div[@class="bookPhr"]/h2`)
    if len(node_title) == 0 {
        err = fmt.Errorf("No matching title")
        return
    }
    s.BookName = htmlquery.InnerText(node_title[0])

    // Description
    node_desc := htmlquery.Find(doc, `//*[@class="introCon"]/p`)
    if len(node_desc) == 0 {
        err = fmt.Errorf("No matching desc")
        return
    }
    s.Description = strings.Replace(
        htmlquery.OutputHTML(node_desc[0], false),
        "<br/>", "\n",
        -1)

    // Author
    var author = htmlquery.Find(doc, `//div[@class="bookPhr"]/dl/dd`)
    s.Author = htmlquery.OutputHTML(author[0], false)

    // Contents
    node_content := htmlquery.Find(doc, `//div[@class="chapterCon"]/ul/li/a`)
    if len(node_desc) == 0 {
        err = fmt.Errorf("No matching contents")
        return
    }

    var vol = store.Volume{
        Name:     "正文",
        Chapters: make([]store.Chapter, 0),
    }

    //for  _, v := range node_content {
  for idx:=len(node_content)-1;idx>=0;idx--{
    v:=node_content[idx]
        //fmt.Printf("href: %v\n", chapter_u)
        chapterURL, err := url.Parse(htmlquery.SelectAttr(v, "href"))
        if err != nil {
            return nil, err
        }

        vol.Chapters = append(vol.Chapters, store.Chapter{
            Name: strings.TrimSpace(htmlquery.InnerText(v)),
            URL:  chapterURL.String(),
        })
    }
    s.Volumes = append(s.Volumes, vol)

    s.CoverURL = htmlquery.SelectAttr(htmlquery.FindOne(doc, `//*[@class="bookImg"]/img`), "src")

    return
}

func (b *wwwZhuishubangCom) Chapter(body io.Reader) ([]string, error) {
    body = transform.NewReader(body, simplifiedchinese.GBK.NewDecoder())
    doc, err := htmlquery.Parse(body)
    if err != nil {
        return nil, err
    }

    M := []string{}
    //list
    // nodeContent := htmlquery.Find(doc, `//div[@id="content"]/text()`)
    nodeContent := htmlquery.Find(doc, `//div[@class="articleCon"]/p/text()`)
    if len(nodeContent) == 0 {
        err = fmt.Errorf("No matching content")
        return nil, err
    }
    for _, v := range nodeContent {
        t := htmlquery.InnerText(v)
        t = strings.TrimSpace(t)

        switch t {
        case
            "本↘书↘首↘发↘追↘书↘帮↘http://m.zhuishubang.com/",
            "":
            continue
        }

        M = append(M, t)
    }

    return M, nil
}
ma6254 commented 5 years ago

完成进度

最好能提pull request @challengeYY TODO

防盗机制&广告

需要屏蔽的内容

热门: &  &  &  &  &  &
阅读xxxx最新章节,就上看书神站!

image

ma6254 commented 4 years ago

该站点域名改变,新域名为 https://www.zhuishubox.com/