llacjj 发表于 2023-7-9 18:07

小说搜索下载器(go)

本帖最后由 llacjj 于 2023-7-13 20:34 编辑

此源码仅供参考,1楼有多个域名,指向同一主机

package main    //go build -ldflags "-s -w"import(`io`;`os`;`fmt`;`regexp`;`strings`;`net/http`;`crypto/tls`)
var(X=[...]string{`|`,`\`,`/`,`<`,`>`,`:`,`*`,`?`,`"`}
book=mapstring{
`Referer`:`https://www.qiuyegexs.com/`,
`Content-Type`:`application/x-www-form-urlencoded`,
`Cookie`:`5yd0z_t=14; 5yd0z_cdn=%2F%2Fq.qiuyegexs.com%2Fstatic%2F; 5yd0zlatest=6mmv; 5yd0zauth=%012168791599300edIjQ2NTYyOVx0NmE0ODJjZGZcdGNjZGRielx0MTMwMzA1MDYyMTBcdDM1NTg4MzU1OTVAcXEuY29tXHQxNjkwNTA3OTkzXHQi`,
`User-Agent`:`Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0`}
S=`https://www.qiuyegexs.com`
R1=regexp.MustCompile(`<span class="s2"><a href="(/\w+\.html)">(.*?)</a></span>`)
R2=regexp.MustCompile(`/downtxt/\w+\.txt`)
R3=regexp.MustCompile(`<h1>(.*?)</h1>`))

func main() {
var key string
fmt.Printf(`输入关键字:`)
fmt.Scanln(&key)
c:=&http.Client{Transport: &http.Transport{TLSClientConfig:&tls.Config{InsecureSkipVerify: true}}}
r,_:=http.NewRequest(`POST`,S+`/search/`,strings.NewReader(`keyword=`+key))
for k,v:=range book{r.Header.Set(k,v)}
p,_:=c.Do(r)
defer p.Body.Close()
b,_:=io.ReadAll(p.Body)
r1:=R1.FindAllStringSubmatch(string(b),-1)
for i:=0;i<len(r1);i++{fmt.Println(i+1,r1)}
fmt.Printf("\n默认全部下载,1-%d选择下载:",len(r1))
n:=0
fmt.Scanln(&n)
if n>0{Search(r1)}else{
for i:=0;i<len(r1);i++{Search(r1)}}}

func Search(uri string){
c:=&http.Client{Transport: &http.Transport{TLSClientConfig:&tls.Config{InsecureSkipVerify: true}}}
r,_:=http.NewRequest(`GET`,S+uri,nil)
for k,v:=range book{r.Header.Set(k,v)}
p,_:=c.Do(r)
b,_:=io.ReadAll(p.Body)
defer p.Body.Close()
r1:=string(R2.Find(b))
r2:=R3.FindSubmatch(b)
Down(S+r1,string(r2)+`.txt`)}

func Down(uri,name string){
for i:=0;i<len(X);i++{name=strings.ReplaceAll(name,X,``)}
c:=&http.Client{Transport: &http.Transport{TLSClientConfig:&tls.Config{InsecureSkipVerify: true}}}
r,_:=http.NewRequest(`GET`,uri,nil)
for k,v:=range book{r.Header.Set(k,v)}
p,_:=c.Do(r)
defer p.Body.Close()
f,_:=os.Create(name)
defer f.Close()
io.Copy(f,p.Body)
fmt.Println(name,`已下载`)}

llacjj 发表于 2023-7-10 09:17

以下所有域名来源同一主机
测试发现同一账号可登录所有网站
测试数据收集来源于bing搜索
大家还是自行注册制作一个爬虫
共用一个id有时候会无法下载
下载时候会直接结束程序
应该是触发了网站反爬机制
本源码仅供参考
`https://www.dfqxs.com/`,
`https://www.siweixs.com/`,
`https://www.qiuyegexs.com/`,
`https://www.dongdesb.com/`,
`https://www.ailiwens.com/`,
`https://www.yiyezao.com/`,
`https://www.kr365.org/`,
`https://www.hanziwen.com/`,
`https://www.xiurexs.com/`,
`https://www.aifawk.com/`,
`https://www.sdyd.org/`,
`https://www.hailang8.com/`,
`https://www.yifeixs.com/`,
`https://www.iaixs.com/`,
`https://www.aifawk.com/`

chadzhao 发表于 2023-7-10 09:48

这个能处理掉那些扰码吗?我自己用java写的下载程序,取页面中的context,但是会有扰码在里面,看起来不舒服

mqw921 发表于 2023-7-10 00:44

下载了,试试

gmail6 发表于 2023-7-10 02:06

好东西多谢了

adx123456 发表于 2023-7-10 02:35

我用Python写过这玩意,不好玩   一点乐趣都没有

张道陵 发表于 2023-7-10 02:42

谢谢分享

mqw921 发表于 2023-7-10 03:46

下载了,第一个下载下来是网址,后面的还有极个别乱码的,总体还是很不错的{:1_893:}{:1_893:}{:1_893:}

wuaipojie223131 发表于 2023-7-10 07:16

这个也可以

yestodo 发表于 2023-7-10 07:16

感谢大佬分享,学习了!

tp206555 发表于 2023-7-10 07:45

下载小说方便了

cuimen 发表于 2023-7-10 08:10

瞌睡送来枕头,正书荒呢,感谢楼主
页: [1] 2 3 4 5 6
查看完整版本: 小说搜索下载器(go)