w1748 发表于 2022-11-13 12:42

关于某小说api的简单调用

本帖最后由 w1748 于 2023-1-30 00:15 编辑

最新代码:https://github.com/UnAbuse/reptile.inclued,过年没时间在这上面更新,后面有时间一起改了。
平时无事喜欢看小说,可是某平台的广告让人非常苦恼。
于是我花了点时间找了下api,对api进行数据处理,然后发现返回为空。。。。原来是要登录,相信大部分人对于cookie的获取已经轻车熟路,所以我在这里只放源码供大家娱乐。
import Gh

      class FanQie:
                def __init__(self):
                        # 引入二次封装的网络请求函数
                        self.Meth = Gh.Meth()
                        # 定义基本参数
                        Cookie = ''
                        self.search_url = 'https://novel.snssdk.com/api/novel/channel/homepage/search/search/v1/'
                        self.headers = {'User-Agent': 'Mozilla/5.0 (Danger hiptop 3.4; U; AvantGo 3.2)', 'Cookie': Cookie}
                        self.encoding = 'utf-8'
                        self.directory_url = 'https://api5-normal-lf.fqnovel.com/reading/bookapi/directory/all_items/v/'
                        self.content_url = 'https://novel.snssdk.com/api/novel/book/reader/full/v1/'
      
                def search(self, keywords):
                        # 获得书本基本信息
                        params = {'aid': 13,'q': keywords}
                        book_list_info = self.Meth.get_Html(self.search_url, 'GET', 'json', self.headers, self.encoding, params)
                        book_list = book_list_info['data']['ret_data']
                        book_list_clear = []
                        for items in book_list: book_list_clear.append({'title': items['title'], 'author': items['author'], 'category': items['category'], 'book_id': items['book_id'], 'abstract': items['abstract']})
                        return book_list_clear
      
                def direct(self, book_id):
                        # 获取书本目录
                        params = {'book_id': book_id, 'aid': 1967, 'iid': 2665637677906061, 'app_name': 'novelapp', 'version_code': 495}
                        direc_list_info = self.Meth.get_Html(self.directory_url, 'GET', 'json', self.headers, self.encoding, params)
                        direc_list = direc_list_info['data']['item_data_list']
                        direc_list_clear = []
                        for items in direc_list: direc_list_clear.append({'title': items['title'], 'volume_name': items['volume_name'], 'item_id': items['item_id'],'content_md5': items['content_md5']})
                        return direc_list_clear
      
                def content(self, item_id):
                        # 获取当前章节正文内容
                        params = {'group_id': item_id, 'item_id': item_id}
                        content_info = self.Meth.get_Html(self.content_url, 'GET', 'json', self.headers, self.encoding, params)
                        try: return content_info['data']['content']
                        except: return '未配置cookie或者cookie失效'

import requests
      from random import randint

      class Meth:
                def __init__(self, proxy_list=None):
                        # 定义代{过}{滤}理ip的列表
                        self.proxy_list = None
                        if self.proxy_list is None: self.proxy_list = []
                        else: self.proxy_list = proxy_list

                def get_ip(self, filename):
                        # 从文件中读取代{过}{滤}理ip
                        with open(filename, 'r+', encoding='utf-8') as file_data:
                              data = file_data.readlines()
                              for items in data:
                                        items = items.strip('\n')
                                        self.proxy_list.append(items)

                def get_Html(self, url, methods, res, headers, encoding, params=None):
                        # 判断是否使用本地代{过}{滤}理外的代{过}{滤}理
                        if len(self.proxy_list) == 0: proxy = None
                        else: proxy = eval(self.proxy_list)
                        # 获取text,json格式
                        if params:
                              if methods == 'GET': data = requests.get(url=url, headers=headers, params=params, proxies=proxy)
                              elif methods == 'POST': data = requests.post(url=url, headers=headers, data=params, proxies=proxy)
                        else:
                              if methods == 'GET': data = requests.get(url=url, headers=headers, proxies=proxy)
                              elif methods == 'POST': data = requests.post(url=url, headers=headers, proxies=proxy)
                        data.encoding = encoding
                        if res == 'text': return data.text
                        elif res == 'json': return data.json()

oxding 发表于 2022-11-13 13:55

楼主能不能帮我改一下代码

想批量上传ftp的程序 ,想从D盘根目录上传所有文件

import time
from ftplib import FTP

def ftp_upload():
    ftp = FTP()
    ftp.set_debuglevel(2)#打开调试级别2,显示详细信息;0为关闭调试信息
    ip = 'xxx.xx.xx.xx'
    ftp.connect(ip,21)#连接
    ftp.login('username','password')#登录,如果匿名登录则用空串代替即可
    # print(ftp.getwelcome())#显示ftp服务器欢迎信息
    bufsize = 1024#设置缓冲块大小
    for id in range(24260,25200):
      localpath ='/xxx/xxx/xxx/tifFile_final/VFB_000'+str(id)+'.tif'#在本地的文件
      remotepath = '/xxx/xxx/tifFile_final/VFB_000'+str(id)+'.tif'#在ftp端的文件
      file_handler = open(localpath,'rb')#以读模式在本地打开文件
      ftp.storbinary('STOR '+remotepath,file_handler,bufsize)#上传文件
      ftp.set_debuglevel(0)
      print("ftp upload VFB_000 "+str(id)+" OK")
    file_handler.close()
    ftp.quit()
def main():
    start = time.clock()
    ftp_upload()
    end = time.clock()
    t = end - start
    print("Runtime is :",t)      
   
if __name__=="__main__":
    main()

w1748 发表于 2022-11-13 17:28

oxding 发表于 2022-11-13 13:55
楼主能不能帮我改一下代码

想批量上传ftp的程序 ,想从D盘根目录上传所有文件


我试着改一下吧

Ineverleft 发表于 2022-11-13 14:01

感谢楼主分享,非常值得学习

xiaoyudengyu 发表于 2022-11-13 15:12

学到了谢谢楼主

十宠喵sama 发表于 2022-11-13 15:43

有用的知识增加+1

KaliChen 发表于 2022-11-13 15:58

感谢分享~

liu流年 发表于 2022-11-13 16:25

感谢楼主

CoderLeiShuo 发表于 2022-11-13 16:35

正在学习python,感谢分享

cnwutianhao 发表于 2022-11-13 17:11

感谢分享,学习了

makizhang 发表于 2022-11-13 17:18

感谢分享,十分有用
页: [1] 2 3
查看完整版本: 关于某小说api的简单调用