您现在的位置是:网站首页> 软件下载软件下载
某书屋爬虫成品-BookReptile.exe下载附代码-软件下载
2021-05-21
186人已围观
简介 某书屋爬虫成品-BookReptile.exe下载附代码-软件下载
BookReptile.exe是一款用go语言写的某书屋爬虫,有代码,有成品,大家笑纳,今天写了一个书屋的爬虫,献给爱读书的朋友们,该网站有两种下载页,一个城通,一个百度云,城通没有密码,百度云含密码,才学go语言,所以没有去重功能,每次会重新新建txt文档,之前爬好的数据,注意保存哦.
主要功能
爬取书名+下载网址+密码
使用说明
这是单线程的,多线程,
多线程,直接go working(i)即可.
再加入channel通知主go程退出即可

软件代码
package main
import (
"fmt"
"io"
"net/http"
"os"
"regexp"
"strconv"
"strings"
)
var count int
func main() {
var start, end int
fmt.Print("起始页(>=1):")
fmt.Scan(&start)
fmt.Print("终止页(>=起始页[适度爬取,太多小心IP被封哦]):")
fmt.Scan(&end)
//创建文件
fc,err:=os.Create("BookList.txt")
if err!=nil{
fmt.Println("os.Create err",err)
return
}
fc.Close()
//循环读取每一页
for i := start; i <= end; i++ {
working(i)
}
fmt.Println("爬取完毕,马上闪开!!!")
}
func working(idx int) {
//打开文件
fo,err:=os.OpenFile("BookList.txt",os.O_APPEND,6)
if err!=nil{
fmt.Println("os.OpenFile err",err)
return
}
defer fo.Close()
url := "https://www.bukebook.cn/page/" + strconv.Itoa(idx)
result, err := httpGet(url, idx)
if err != nil {
fmt.Println("检查网络,或者IP被封了...")
return
}
//正则处理信息获得bookID
//正则规则
bookIDRule :=`class="greatwp-fp04-post-title">`
bookNameRule := `.html">《(?s:(.*?))`
CTUrlRule := `城通网盘`
psdRule := `提取秘钥: (?s:(.*?)) `
allID:=regexpData(result, bookIDRule)
for i,tmpID:=range allID{
bookID:=tmpID[1]
//拼接下载页URL
dlUrl:="https://www.bukebook.cn/wp-content/plugins/ordown/down.php?id="+bookID
//访问下载页
dlResult,err:=httpGet(dlUrl,i)
if err!=nil{
fmt.Println("dl httpGet err",err)
return
}
//处理数据获取书名,下载地址及密码
allBookName:=regexpData(dlResult,bookNameRule)
allCTUrl:=regexpData(dlResult,CTUrlRule)
allPsd:=regexpData(dlResult,psdRule)
//fmt.Println(dlResult)
for _,tmpBookName:=range allBookName{
bookName:=tmpBookName[1]
//判断网盘类型
if strings.Contains(dlResult,"百度云盘"){
count++
//封装百度网盘URL
BDUrl:="https://www.bukebook.cn/wp-content/plugins/ordown/download1.php?id="+bookID
//获取网盘密码
for _,tmpPsd:=range allPsd{
//存储书名及城通地址
fo.Write([]byte(strconv.Itoa(count)+".《"+bookName+"\n"+BDUrl+" "+tmpPsd[1]+"\n"))
fmt.Println("《"+bookName+" 完成\n")
}
}else{
count++
//获取城通网址
for _,tmpCTUrl:=range allCTUrl{
//存储书名及城通地址
fo.Write([]byte(strconv.Itoa(count)+".《"+bookName+"\n"+tmpCTUrl[1]+"\n"))
fmt.Println("《"+bookName+" 完成\n")
}
}
}
}
}
func regexpData(data, rule string) [][]string {
reg := regexp.MustCompile(rule)
return reg.FindAllStringSubmatch(data, -1)
}
func httpGet(url string, idx int) (result string, err error) {
resp, err1 := http.Get(url)
if err1 != nil {
err = err1
return
}
defer resp.Body.Close()
buf := make([]byte, 4096)
for {
n, err2 := resp.Body.Read(buf)
if n == 0 {
break
}
if err2 != nil && err2 != io.EOF {
err = err2
return
}
result += string(buf[:n])
}
return
}
相关内容
- 搜索引擎优化工具(Blumentals Rapid SEO Tool)下载v2.10.0.20免费版-软件下载
- Blumentals Rapid SEO Tool下载-搜索引擎SEO优化软件Blumentals Rapid SEO Tool下载v2.10.0.20 官方版-软件下载
- 在线扒站软件下载-在线扒站程序下载-软件下载
- 在线网页制作程序源码-在线网页制作程序下载-软件下载
- BIGEMAP离线地图服务器下载v1.2.7官方版-软件下载
- 远程桌面软件(TightVNC)下载v2.8.23中文版-软件下载
- 百度云盘提取码获取器-闪电百度云提取码获取器下载v1.0.0 PC版-软件下载
- JVM监控(EJ Technologies Perfino)下载v3.2.3免费版-软件下载
- 皮皮抖音地址解析小工具下载-无水印地址解析下载绿色版-软件下载
- 抖音视频无水印批量获取下载工具-抖音作品无水印批量获取下载下载绿色版-软件下载
点击排行
- 朗科u盘修复工具 朗科NT2060 U210修复工具 1.0.0.6 中文绿色版 下载-
- 朗科NT2060B主控U盘修复工具 绿色版 下载-
- 群联量产工具Phison MPALL v3.72.0B 绿色中文版 下载-
- ModeConverter群联模式转换器 汉化绿色免费版 下载-
- 群联Phison PS2251-01固件更新工具 V1.5 绿色中文版 下载-
- 慧荣SM3257enba量产修复工具 V14.02.26.21 N0228 绿色中文版 下载-
- 安国ALCOR AU698X MP v14.08.12.00版量产工具 下载-
- 慧荣全系量产工具V2.5.36版V7(2014/06/27) 下载-
