Metadata-Version: 2.1
Name: xingyunlib
Version: 1.2.20210416
Summary: 星光☆学而思专用库
Home-page: UNKNOWN
Author: 严子昱
Author-email: yanziyu252625@qq.com
Maintainer: 严子昱
Maintainer-email: yanziyu252625@qq.com
License: BSD License
Description: 
        # xingyunlib
        [toc]
        
        开发者：严子昱|崔轩宇
        
        v1.2.20201004
        
        #v1.2.xx以后全是正式版#
        
        #hack-20201004:修复xesuser故障
        
        版权所有，侵权必究
        
        内置函数 导入方式：
        
        ```python
        from xingyunlib import *
        ```
        ### 加密函数
        
        ```python
        md=md5("111")#作用：用MD5加密"111"，返回一个字符串
        s1=sha1("111")#作用：用sha1加密"111"，返回一个字符串
        s256=sha256("111")#作用：用sha1加密"111"，返回一个字符串
        ```
        
        ### 颜色类
        
        ```python
        color=colorX(颜色,传进去的颜色类型)#类型支持"rgb","hsv","hex"
        #示例：
        color=colorX((100,100,100),"rgb")
        ```
        
        #### color.color
        
        返回颜色
        
        ```python
        z=color.color
        ```
        
        #### color_to(to_color,change=False)
        
        返回一个要转换的颜色
        
        to_color:转换的颜色，类型支持"rgb","hsv","hex"
        
        change：是否更改原来的颜色
        
        ```python
        color=colorX((255,255,255),"rgb")#实例化rgb
        color.color_to("hex",True)#更改进制为16进制
        print(color.color)#打印出color.color
        ```
        
        
        
        # all（一次性导入扩展！可能出现覆盖现象！）
        
        ## 使用方式
        
        ```python
        from xingyunlib.all import*
        #或者
        import xingyunlib.all as xingyunlib
        ```
        
        # print_format（print格式化扩展）
        
        开发者：严子昱
        
        ## 导入方式
        
        ```python
        from xingyunlib.print_format import*
        ```
        
        
        
        ### print() 
        
        ```python
        print(*str,t=0,sepr=" ",end="\n") 
        ```
        
        
        我们来逐个讲解他们的用法 
        
        首先来看t参数： 
        t=每个字停留的时间(默认为不停留) 
        比如说，要每个字停留1秒，输出"nice"的代码如下： 
        `print("nice",t=1)` 
        
        然后我们来看end参数 
        这个end参数其实和原来print的end参数是同样的作用 
        默认是"\n"(换行符) 
        
        最后我们看sepr参数，这个参数也是和原来print的sepr是同样的作用 
        我们来看一个例子： 
        `print("ni","e",sepr="c")` 
        最后输出的就是“nice” 
        
        我们来看大家这个很关心的变色简洁方式 
        我们在变色具体支持这些颜色： 
        红、白、绿、蓝、黄、青、紫 
        用法如下（注意是两个斜杠）： 
        '\\'+颜色（字的颜色变化） 
        '\\l'+颜色（字的颜色变化,亮色）
        '\\b'+颜色（字的背景变化） 
        '\\bl'+颜色（字的背景变化,亮色） 
        '\\'(去除所有的变色效果) 
        
        ### clear_os()
        
        ```python
        clear_os()
        ```
        
        清除屏幕上的所有文字
        
        # xes更改（去除xeslib里面所有的print）
        
        最新版本的xingyunlib增加了xeslib的内容
        
        ## 导入方式
        
        ```python
        from xingyunlib.xes import xeslib里面的库名
        ```
        
        更改：
        
        把xeslib里面所有的print都去了
        
        修改AIspeak.speak函数
        
        ```python
        from xingyunlib.xes import AIspeak
        xes.AIspeak.speak("hello python!","file.mp3")
        """
        本程序作用：
        将hello python！
        保存到file.mp3音频文件里面，并且不播放
        """
        xes.AIspeak.speak("hello python!")
        """
        本程序作用：
        播放hello python！这段音频
        """
        ```
        
        # xesapp（获取学而思站上某个作品的数据！已修复！）
        
        开发者：严子昱|崔轩语
        
        ## 导入方式
        
        ```python
        from xingyunlib.xesapp import*
        ```
        
        
        
        ### xesapp(url)
        
        ```python
        <xesapp>=xesapp(url)
        ```
        
        构建一个运行对象
        url为学而思里面的py作品网址
        
        接下来讲这个类的方法：
        
        
        ##### get_hot()<u></u>
        
        返回作品的热度
        
        ```python
        print(xesapp.get_hot())
        ```
        
        ##### get_cover()
        
        返回作品封面的url
        
        ```python
        print(xesapp.get_cover())
        ```
        
        ##### load_cover(filename)
        
        下载作品封面到filename
        
        ```python
        xesapp.load_cover("")
        ```
        
        ##### get_view()
        
        返回作品的观看人数
        
        ```python
        print(xesapp.get_view())
        ```
        
        ##### get_hot()
        
        返回作品的热度
        
        ```python
        print(xesapp.get_hot())
        ```
        
        ##### get_like()
        
        返回作品的点赞数
        
        ```python
        print(xesapp.get_like())
        ```
        
        ##### get_unlike()
        
        返回作品的点踩数
        
        ```python
        print(xesapp.get_unlike())
        ```
        
        ##### load_file(cache = "")
        
        默认下载作品源文件到工作目录
        如果cache不为空择下载到这个文件夹
        
        ```python
        xesapp.load_file()
        ```
        
        ##### is_like()
        
        判断在程序运行这个作品有没有人点赞
        返回一个bool值
        True：点赞了
        False：点踩了
        None：没有点赞也没有点踩
        
        ```python
        if xesapp.is_like == True:
            print("点赞了")
        elif xesapp.is_like == False:
            print("点踩了")
        else:
            print("什么都没点")
        ```
        
        ##### run_app()
        
        运行这个作品
        
        ```python
        exec(xesapp.run_app())
        ```
        
        
        ##### get_published()
        
        获取作品第一次保存时间
        
        ```python
        print(xesapp.get_published())
        ```
        
        ##### get_modified()
        
        获取作品最后一次更新时间
        
        ```python
        print(xesapp.get_modified())
        ```
        
        ##### is_hidden_code()
        
        获取作品是否隐藏代码
        
        ```python
        if xesapp.is_hidden_code():
            print("作品的代码隐藏了")
        else:
            print("作品的代码没有隐藏")
        ```
        
        ##### get_description()
        
        获取作品的说明
        
        ```python
        print(xesapp.get_description())
        ```
        
        ##### get_comments()
        
        获取作品一共有多少人评论
        
        ```python
        print(xesapp.get_comments())
        ```
        
        ##### is_comments()
        
        获取从这个作品初始化到现在是否有人评论
        
        ```python
        if xesapp.is_comments():
            print("评论了")
        else:
            print("没有评论")
        ```
        ## cmt(url)
        
        这个是一个获取评论的api
        
        ### dta_dic
        
        ```python
        #获取一个包含所有评论的列表
        a=cmt("http://code.xueersi.com/home/project/detail?lang=code&pid=9785566&version=offline&form=python&langType=python")
        print(a.dta_dic)
        #输出
        """
        （略）
        """
        ```
        
        ### fmt（）
        
        ```python
        #返回一个字符串（评论的字符格式化）
        a=cmt("http://code.xueersi.com/home/project/detail?lang=code&pid=9785566&version=offline&form=python&langType=python")
        print(a.fmt())
        #部分输出
        """
        [2020-10-17 20:52:11]
        	一维回复严子昱:快点=-=不取关就pen你
        
        [2020-10-17 20:51:31]
        	一维回复严子昱:有时关注我这个人，并不是太好的选择
        	取关我吧，有事请加qq：3456198711
        	微信：huiyu431249891
        
        [2020-10-17 18:34:35]
        	俊翔回复严子昱:作者是喜欢互关吗？居然关注我这样的蚂蚁，太感动了
        
        [2020-10-15 21:56:11]
        	陈奕翰回复严子昱:考虑合作嘛
        	
        
        [2020-10-10 19:29:26]
        	茜幻回复严子昱:作者在吗
        
        [2020-10-10 19:10:42]
        	蒋狄璁回复严子昱:互关
        
        .......(略)
        """
        
        ```
        
        ### sorted（by=“likes”,reverse=True）
        
        ```python
        #设置排序
        a=cmt("http://code.xueersi.com/home/project/detail?lang=code&pid=9785566&version=offline&form=python&langType=python")
        a.sorted(by="likes",reverse=True)#reverse为 从高到低排列
        print(a.fmt())
        
        """
        [2020-10-15 21:56:11]
        	陈奕翰回复严子昱:考虑合作嘛
        	
        
        [2020-10-17 20:52:11]
        	一维回复严子昱:快点=-=不取关就pen你
        
        [2020-10-17 18:34:35]
        	俊翔回复严子昱:作者是喜欢互关吗？居然关注我这样的蚂蚁，太感动了
        
        [2020-10-01 20:51:57]
        	王玎珰回复严子昱:啊这
        ...（略）
        """
        
        
        ```
        
        
        
        # **xesuser（获取学而思站上某个用户的数据！已修复！）**
        
        <u>***注意！！***</u>
        
        <u>***千万一定不要超高频率请求，否则会报错！！！***</u>
        
        作者：严子昱
        
        ## 导入方式
        
        ```python
        from xingyunlib.xesuser import*
        ```
        
        
        
        ### get_user_id("作品网址")
        
        ```python
           user_id=get_user_id("作品网址")
           #本作品最重要的函数，这个获取作品网址的作者的user_id
        ```
        
        ### get__fans(user_id) 
        
        ```python
           fans_info=get_fans(user_id) 
           #这个user_id从上面拿
           #获取这个人粉丝的大部分信息，返回一个列表
           #每项是一个字典：
              fans_info[x]["realname"]#:获取第x项他的名字
              fans_info[x]["avatar_path"]#:获取第x项他头像的url
              fans_info[x]["fans"]#:获取第x项他的粉丝数量
              fans_info[x]["follows"]#:获取第x项他的关注数量
        ```
        
        ### get_follows(user_id) 
        
        ```python
           follows_info=get_follows(user_id) 
           #大体和get_fans一样
           #获取这个人粉丝的大部分信息，返回一个列表
           #每项是一个字典：
              follows_info[x]["realname"]#:获取第x项他的名字
              follows_info[x]["avatar_path"]#:获取第x项他头像的url
              follows_info[x]["fans"]#:获取第x项他的粉丝数量
              follows_info[x]["follows"]#:获取第x项他的关注数量
        ```
        
        ### get_info(user_id) 
        
        ```python
           user_info=get_info(user_id) 
           #获取这个人的大部分信息，返回一个字典
           user_info["name"]#:返回这个人的名字
           user_info["slogan"]#:返回这个人的口号(名字下面那段)
           user_info["fans"]#:返回这个人的粉丝数量
           user_info["follows"]#:返回这个人的关注数量
           user_info["icon"]#:返回这个人的头像url
        ```
        
        ### user(user_id)
        
        ```python
           user=user(user_id)#这个其实大部分都是前面的内容，不过前面的加载比较慢，这个适用需要数据比较多的程序
           user.works#：获取发布的作品总数
           #user.work_info#：获取发布的作品的信息，返回一个列表，列表的每项都是字典
           user.work_num#：获取一共有多少个作品（曾经发过的也算）
        
           user.fans#：获取粉丝总数
           #user.fans_info#：获取粉丝信息（和get_fans返回一样的信息）
        
           user.follows#：获取关注总数
           #user.follows_info#：获取关注信息（和get_follows返回一样的信息）
           user.like_num#：获取点赞总数
           user.view_num#：获取浏览总数
           user.favorites#：获取收藏总数
            
        ```
        
        # xesapi
        
        ## 导入方式
        
        ```python
        from xingyunlib.xesapi import* 
        ```
        
        ## get_api(url)
        
        返回url这个api上的数据
        
        示例->http://code.xueersi.com/api/index/works/modules
        
        ```python
        print(get_api("http://code.xueersi.com/api/index/works/modules"))
        """
        ==输出==
        {'stat': 1, 'status': 1, 'msg': '操作成功', 'data': [{'title': '可多推荐', 'simple_title': '推荐', 'lines': 2, 'projects': [{'id': 11584188, 'name': '圆圈战争', 'category': 1, 'type': 'normal', 'user_id': 9686613, 'thumbnail': 'https://rescode.xesimg.com/hufu-code/common/mit/32f6766530dc287c1c8ab00c634e352b.png', 'published': 1, 'published_at': '2020-11-18 19:42:53', 'modified_at': '2020-11-18 19:42:53', 'likes': 4, 'views': 333, 'comments': 0, 'version': '3.0', 'source': 'xes_live', 'deleted_at': None, 'original_id': 2, 'created_at': '2020-11-17 20:46:43', 'updated_at': '2020-11-20 21:25:02', 'weight': 1, 'adapter': '', 'hidden_code': 2, 'source_code_views': 3, 'removed': 0, 'first_frame': 'https://rescode.xesimg.com/hufu-code/common/mit/32f6766530dc287c1c8ab00c634e352b.png', 'unlikes': 5, 'project_id': 11584188, 'works_id': 11584188, 'lang': 'scratch', 'popular_score': 12.13, 'username': '冯嘉睿', 'user_avatar': 'https://oot.xesimg.com/user/h/cc1e41a2dc511b8108a05b8f0dc8cf69.jpg', 'project_type': 'scratch', 'topic_id': 'CS_11584188'}, {'id': 11027485, 'name': '井字棋小游戏(双人)', 'category': 1, 'type': 'normal', 'user_id': 7818569, 'thumbnail': 
        ...(略)
        """
        ```
        
        ## get_page(page,lang="",tag="",type="popular")
        
        page：页码
        
        lang：语言
        
        tag：标签
        
        type：爬取页面类型（默认为popular）
        
        ```python
        print(get_page(1,"cpp"))
        '''
        ==输出==
        {'page': '1', 'per_page': '35', 'total': 7000, 'data': [{'id': 10443775, 'name': '教你如何黑电脑', 'category': 1, 'type': 'normal', 'user_id': 8730932, 'thumbnail': 'https://livefile.xesimg.com/programme/assets/b33adba6678f5e477f65d0f36d5581eb.jpg', 'la
        ...(略)
        '''
        ```
        
        ## page_all_tags
        
        这个是一个常量(就是上面那个tag可以取得量)
        
        ```python
        print(page_all_tags)
        """
        ==输出==
        {'all_tags': ['游戏', '动画', '故事', '模拟', '艺术', '教程', '算法', '海龟', '沙盒专区', '其他'], 'tips': '1、为什么要给作品打分类标签？n为你的作品选择分类，更有利于其他小朋友精准的找到你的作品，这样，你的作品被别人看到的机率会更大哦。n一定要准确的选择分类，不要随便选择不或者不选呦！nn2、如何为自己的作品选择分类？n要想准确的选择分类，首先要先知道每个分类代表什么意思，一起来了解一下吧！n游戏：射击，冒险，跑酷，换装等等这些都算作游戏。n动画：用编程实现动画效果的作品。n故事：用编程表达一个奇妙的故事，比如写小说。n模拟：视频软件模拟器，音乐软件模拟器，浏览器模拟器，甚至做个模拟的系统。n艺术：美术，音乐等等类型的作品都可以。n教程：如果你是大牛，就快做作品教别人和你一样优秀吧！n算法：算法是解决一个问题的方法，C++用户请看这里。n海龟：海龟画图是python语言中专门用户画图的方法呦！n沙盒专区：MC？mini？为什么不自己创作一个类似的作品呢？n其他：如果没想好自己作品的分类，就选这个吧。'}
        """
        ```
        
        # pygame_extend（pygame扩展）
        
        导入方式：
        
        ```python
        from xingyunlib.pygame_extend import *
        ```
        
        (这样顺便导入pygame和sys欸嘿嘿)
        
        ！没写完教程等需求多了在说把！
        
        # tkinter_extend（tkinter扩展）
        
        ## 导入方式
        
        ```python
        from xingyunlib.tkinter_extend import*
        ```
        
        作者：严子昱
        
        ##   inpu_box
        
        (class)
        
        ```python
        #创建(就当button控件用)：
        a=inpu_box(tk,函数名,**按钮的配置)
        
        #打包：
        a.pack(**pack的配置)
        
        #配置：
        a.config_entry(**文本框的配置)
        a.config_button(**按钮的配置)
        #其实你基本可以当做Entry来用，除了初始化语句还有配置以外基本都是一样的
        #（剩下的教程还没写完）
        ```
        
        ## jitter()
        
        作用：抖动窗口（需要在窗口加载完毕后使用，否则可能会出现鬼畜）
        
        ```python
        from tkinter import *
        root = Tk()
        a = Text(root)
        a.pack(fill=BOTH)
        
        jitter(root)
        root.mainloop()
        ```
        
        ## center()
        
        作用：将窗口居中
        
        ```python
        from tkinter import *
        root = Tk()
        a = Text(root)
        a.pack(fill=BOTH)
        
        jitter(root)
        root.mainloop()
        ```
        
        # dsfAdmin（自动安装第三方库）
        
        开发者|严子昱
        
        (暂时只支持windows)
        
        ## 导入方式
        
        ```python
        from xingyunlib.dsfAdmin import*
        ```
        
        
        
        ### get_pakages()
        
        作用：获取已安装每个包的版本
        
        ```python
        for x in range(len(get_pakages())):
            print("库"+x[0].center(19," "),"版本"+x[1].center(10," "))
            
        ```
        
        ### find_pakages(pakages,ver=None)
        
        作用：获取时否安装pakage这个库，ver代表版本，默认不进行版本监测
        
        ```python
        if find_pakages("xingyunlib"):
            print("你有安装xingyunlib库！")
        else:
            print("你没有安装xingyunlib库！")
        ```
        
        ### upgrade_pakages(pakage)
        
        作用：更新pakage这个库
        
        ```python
        upgrade_pakages(“xingyunlib”)
        ```
        
        ### install_pakages(pakage)
        
        作用：安装这个库,常和find_pakages一起用
        
        ```python
        if not find_pakages("alsolib"):
        	install_pakages("alsolib")
        #注意这个，这个非常重要的,可以在没安装第三方库的时候自动下载库
        ```
        
        ### dump_pip_list(filename)
        
        作用：将库的list保存到这个文件里面
        
        ### load_pip_list(filename)
        
        作用：将这个文件里面的库导出到正在使用的编译器
        
        ```python
        dump_pip_list("pip_pakages")
        #同目录会出现一个‘pip_pakages.pip’文件
        # |把这个文件移到另一台电脑
        # v
        load_pip_list("pip_pakages")
        #然后这个程序就会自动安装在第一台电脑上所有的第三方库了
        ```
        
        
        
        # image（pillow及wordcloud扩展）
        
        开发者|严子昱
        
        ## 导入方式
        
        ```python
        from xingyunlib.image import*
        ```
        
        ## resize(filename,XY)
        
        作用：将filename这个文件变成XY大的文件
        
        ```python
        resive("img1.png",(100,100))
        #将img1.png变成100x100的缩略图
        ```
        
        ## cloud(text,font_path,savafile=None,image=None,background_color="white",color=True)
        （这个函数要安装numpy和wordcloud库）
        
        作用：text为列表，font_path为字体文件的位置
        
        savafile为保存的文件名，image为模板图片的名字
        
        background_color为背景颜色 color为是否根据模板图片的颜色上色（在有模板的情况下）
        
        ```python
        import os
        text="ahuidgayugwuydgatywefuwfdytafayuofdwtyfauyfatyfautfatyfatyufduyoawfgtydfeutoaftyaf".split("a")
        cloud(text,"(你的字体文件)","all.png")
        os.startfile("all.png")
        ```
        
        ## add_text(img, text, **args)
        
        这个**args包括以下内容
        
        ```python
        font=（”字体文件.ttf”，字号）
        XY=（x坐标，y坐标）#这个坐标以图片左上角为0，0（原点）
        fillColor=颜色（建议使用16进制颜色）
        show_img=True#设置是否在修改完成后显示图片，默认为False
        change_img="newimgname.png"#设置输出的图片文件名
        add_text("原图.png","广告",font=font,XY=XY,fillColor=fillColor,show_img=show_img,change_img=change_img)
        ```
        
        # user（自定义用户类）
        
        开发者|严子昱
        
        ## 导入方式
        
        ```python
        from xingyunlib.user import *
        ```
        
        初始化：
        
        ## user_login(filename=None)
        
        filename:之前的保存数据的文件名，如果没有保存过请不要写filename
        
        ```python
        user=user_login()
        #导入之前的数据
        user=user_login("<数据文件名称>")
        ```
        
        注册：
        
        #### user.registered(name,key,flag=True,filename=None)
        
        name:注册的名字
        
        key:密码
        
        flag设置为True:如果已经导入数据则返回False(如果已经注册过了就不让你注册)否则返回True(注册成功）
        
        flag设置为False：都可以注册
        
        filename：保存数据文件的名称
        
        ```python
        type=user.registered(input("请输入你的名字："),input("请输入你的密码："),flag=True,filename="data")
        if type==True:
            print("注册成功！")
        else:
            print("注册失败！")
        ```
        
        #### user.login(name,key)
        
        name:注册时的名称
        
        key:密码
        
        返回一个bool值，为True或False
        
        True：验证密码正确 False：验证失败
        
        ```python
        type=user.login(input("请输入你的名字："),input("请输入你的密码："))
        if type==True:
            print("注册成功！")
        else:
            print("注册失败！")
        ```
        
        #### user.load(filename)
        
        导入保存的数据，filename为文件名
        
        ```python
        b=user_login()
        b.load("你保存的文件名")
        ```
        
        # mail
        
        ## 导入方式
        
        ```python
        from xingyunlib import mail
        ```
        
        用法：
        
        ## mail.send(to,title,txt)
        
        ```python
        mail.send("3161399620@qq.com","hello python","hello world!")
        ```
        
        to:发送给的邮箱
        
        title:标题
        
        txt:发送的文本
        
        # err（自定义抛出错误）
        
        ## 导入方式
        
        ```python
        from xingyunlib import err
        ```
        
        当你有一些程序想在特定的情况终止怎么办？
        
        试试下面的程序
        
        ## err(txt)
        
        ```python
        from xingyunlib import err
        a=input("请输入1：")
        if a!="1":#如果非1
            err.err("你没有输入1。。。")
        else:
            ...
            #程序自然退出
        ```
        
        # http_spider（爬虫）
        
        ## 导入方式
        
        ```python
        from xingyunlib import http_spider
        ```
        
        ## load_requests(str,between,line)
        
        默认值：between=":" ; line="\n"
        
        between：分隔符
        
        line：换行符
        
        这个概念有点难理解，具体看下面示例，能不能听懂由天命
        
        ```python
        from xingyunlib import http_spider
        header=http_spider.load_requests("""Accept: application/json, text/plain, */*
        Accept-Encoding: gzip, deflate
        Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.116 Safari/537.36""",": ","\n")#那段字符串是从浏览器复制出来的
        print(header)
        """
        ----------
        输出：
        {'Accept': 'application/json, text/plain, */*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.116 Safari/537.36'}
        """
        
        ```
        
        主要作用是自动分析从浏览器复制出来的headers
        
        ## spider(*args,**kwargs)
        
        这个函数就明显很水，完全是凑数用的，不过对于一些新手来说还是有点用的
        
        其实就是requests的变体，增加了一个判断是否状态码是否10x，40x，50x的功能而已
        
        ```python
        from xingyunlib import http_spider
        print(http_spider.spider("http://code.xueersi.com/api/compilers/6?id=6").text)
        #略去输出结果
        ```
        
        ## ua_list
        
        话不多说，上代码
        
        ```python
        from xingyunlib import http_spider
        print(http_spider.ua_list)
        """
        输出：
        ['Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)', 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)', 'Mozilla/5.0 (compatible; rv:1.9.1) Gecko/20090702 Firefox/3.5', 'Mozilla/5.0 (compatible; rv:1.9.2) Gecko/20100101 Firefox/3.6', 'Mozilla/5.0 (compatible; rv:2.0) Gecko/20110101 Firefox/4.0', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2', 'Mozilla/5.0 (compatible) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.682.0 Safari/534.21', 'Opera/9.80 (compatible; U) Presto/2.7.39 Version/11.00', 'Mozilla/5.0 (compatible; U) AppleWebKit/533.1 (KHTML, like Gecko) Maxthon/3.0.8.2 Safari/533.1', 'Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 ', 'Mozilla/5.0 (iPhone; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit/532.9 (KHTML, like Gecko) Version/5.0.3 Mobile/8B5097d Safari/6531.22.7', 'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/4.0.2 Mobile/8C148 Safari/6533.18.5', 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7) AppleWebKit/534.16+ (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4']
        """
        ```
        
        这是一个列表，里面有很多笔者搜集的ua，（截至2020-9-19）收录了15个ua，足够你用了
        
        ## get_xes_url(url)
        
        爬取一个xes的页面
        
        ```python
        from xingyunlib import http_spider
        print(http_spider.get_xes_url("http://code.xueersi.com/api/compilers/6?id=6"))
        #略去输出结果
        ```
        
        # data（保存数据）
        
        数据类方法
        
        2020-10-1
        
        作者：严子昱
        
        ## 导入方式
        
        ```python
        from xingyunlib import data
        ```
        
        ## Data
        
        初始化方法：
        
        ```python
        dta=data.Data(filename,find=False)
        """
        filename:文件名，若没有则创建
        find:搜索模式，若没有filename则报错
        """
        ```
        
        输入数据：
        
        ### change_data(data)
        
        ```python
        dta=data.Data(filename,find=False)
        #略
        """
        data参数支持的数据:
        list,bool,tutle,str,set,dict,int,float
        """
        dta.change_data("加油！")
        ```
        
        ### eval_data()
        
        把从文件中保存的数据转换成可执行内容
        
        ```python
        """fruit.txt内容：
        ["apple","orange"]
        """
        dta=data.Data("fruit.txt",find=False)
        dta.eval_data()
        for x in dta.data:
            print(f"fruit:{x}")
        """
        输出结果：
        fruit:apple
        fruit:orange
        """
        
        
        ```
        
        ### save()
        
        保存结果到文件中
        
        ```python
        dta=data.Data("great",find=False)
        dta.change_data(["hhc","hhv"])
        dta.save()
        """great内容:
        ["hhc","hhv"]"""
        ```
        
        
Platform: all
Classifier: Development Status :: 4 - Beta
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries
Description-Content-Type: text/markdown
