iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 知识星球文件下载
  • 790
分享到

python 知识星球文件下载

星球文件知识 2023-01-31 07:01:13 790人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

#!/usr/bin/python3 # -*- coding: UTF-8 -*- import requests import JSON from urllib.parse import quote import os from py

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

import requests
import JSON
from urllib.parse import quote
import os
from pyquery import PyQuery as pq
import datetime

headers = {
    'Authorization': '37923FBC-C87D-454C-902D-A81DB0834605',
    'x-request-id': "73e67a6f-cf88-4c10-26da-a30441464ed5",
    'accept': "application/json, text/plain, */*",
    'host': "api.zsxq.com",
    'connection': "keep-alive",
    'referer': "https://wx.zsxq.com/dWEB/",
    'user-agent': "Mozilla/5.0 (windows NT 6.1; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
}

def readtopicurl(filename):
    with open(filename, 'r') as f:
        url = f.read()
    return url

def writetopicurl(filename,url):
    try:
        with open(filename, 'w') as f:
            f.write(url)
        return True
    except:
        return False   

def getDownloadURL(file_id):
    file_url = 'Https://api.zsxq.com/v1.10/files/{0}/download_url'.fORMat(file_id)
    return file_url

def get_topic_list(topics_url, end_time=None):
    if end_time:
        url = topics_url + '&end_time=' + quote(end_time)
    return url

def get_endtime(create_time):
    try:
        # int -1 后需要进行补 0 处理,test_str.zfill(3)
        end_time = create_time[:20]+str(int(create_time[20:23])-1).zfill(3)+create_time[23:]
        # 时间出现整点时需要特殊处理,否则会出现 -1
        if create_time[20:23] == '000':
            temp_time = datetime.datetime.strptime(create_time, "%Y-%m-%dT%H:%M:%S.%f+0800")
            temp_time += datetime.timedelta(seconds=-1)
            end_time = temp_time.strftime("%Y-%m-%dT%H:%M:%S") + '.999+0800'
            print('end_time:{0}'.format(end_time))
        return end_time
    except IndexError :
        print("error")
        return None

def request_topics_url(topics_url,headers):
    topics_page = requests.get(topics_url, headers=headers)
    if topics_page.status_code == 200:
        resp_data = json.loads(topics_page.text)
        return resp_data
    else:
        return None

def download_file(index, url, file_name,filedir):
    currentpath=os.getcwd()
    if not os.path.exists(filedir):
        os.mkdir(filedir)
    file_fullpath = '{0}\{1}\{2}'.format(currentpath,filedir,file_name)
    if os.path.exists(file_fullpath):
        return True
    file_res = requests.get(url)
    #print('file_res.status_code:{0}'.format(file_res.status_code))
    if file_res.status_code == 200:
        with open(file_fullpath, 'wb') as f:
            f.write(file_res.content)
            print('----第 {0}个文件:{1}下载成功!'.format(index+1,file_name))
            return True

    else:
        return False

def download_file_url(url):
    doc = pq(requests.get(url,headers=headers).text)
    res_data = json.loads(doc('p').text()) 
    fileurl = res_data['resp_data']['download_url'] 
    return fileurl     

if __name__ =="__main__":
    init_topics_url = 'https://api.zsxq.com/v1.10/groups/454548818428/files?count=20'
        #以下载老齐的读书圈为例
    urlfile = 'temp_topics_url.txt'
    filedir = '读书圈文件'
    if not os.path.exists(urlfile):
        writetopicurl(urlfile, init_topics_url)
        topic_urls = init_topics_url
    else:
        topic_urls = readtopicurl(urlfile)

    print('file_urls:{0}'.format(topic_urls))

    while True:
        resp_data = request_topics_url(topic_urls,headers)
        filelist = resp_data['resp_data']['files']
        for index , urlinfo in enumerate(filelist):
            file_id = urlinfo['file']['file_id']
            file_name = urlinfo['file']['name']
            create_time = urlinfo['file']['create_time']
            downloadurl = getDownloadURL(file_id)
            file_url = download_file_url(downloadurl)
            download_file(index,file_url, file_name,filedir)
            if index == 19:
                end_time = get_endtime(create_time)
                topic_urls = get_topic_list(init_topics_url,end_time)
                writetopicurl(urlfile, topic_urls)
                print('topic_urls:{0}'.format(topic_urls))
                #print('end_time:'.format(end_time))
        if len(filelist) < 20:
            print('全部文件下载完成!!!')
            break

--结束END--

本文标题: python 知识星球文件下载

本文链接: https://www.lsjlt.com/news/190935.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 知识星球文件下载
    #!/usr/bin/python3 # -*- coding: UTF-8 -*- import requests import json from urllib.parse import quote import os from py...
    99+
    2023-01-31
    星球 文件 知识
  • python抓取知识星球精选帖,制作为p
    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/90 背景: 这两年知识付费越来越热,我也加入了不少知识星球,总觉得信息有些过载了。一天不看,就有...
    99+
    2023-01-31
    星球 知识 python
  • uniapp实战项目 (仿知识星球App) - - 效果篇
    实战项目名称:仿知识星球App 技术栈:前端 => uni-app ( 后端:Node.js + Mysql + Apollo + Graphql ) 已实现功能:微信登录,创建星球,内容管理,星...
    99+
    2023-09-03
    uni-app 微信小程序 小程序
  • Python——Day3知识点——文件操
     一、打开文件文件句柄 = open('文件路径', '模式')打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。打开文件的模式有:r,只读模式(默认)。w,只写模式。【不可读;不...
    99+
    2023-01-31
    知识点 文件 Python
  • python wget下载文件
    </pre><pre name="code" class="python">import os os.system('wget '+args) wget常用参数 -c 断点续传 -t NUMBER 最大尝试连接次...
    99+
    2023-01-31
    文件 python wget
  • python批量下载文件
    #!/usr/bin/python # _*_ coding: utf-8 _*_ ''' Created on 2018年8月22日 ''' import urllib import urllib2 import re req = ...
    99+
    2023-01-31
    批量 文件 python
  • python从下载链接下载文件到本地
    requests #引用 requests文件 import requests #下载地址 Download_addres='https://nj02cm01.baidupcs.com/file/da941ce26b392a4...
    99+
    2023-01-31
    下载链接 文件 python
  • python ftp 上传、下载文件
    python ftp 上传、下载文件#获取昨天日期TODAY = datetime.date.today()  YESTERDAY = TODAY - datetime.timedelta(days=1) CURRENTDAY=YESTER...
    99+
    2023-01-31
    上传 文件 python
  • 一文搞定Python读取文件的全部知识
    文件是无处不在的,无论我们使用哪种编程语言,处理文件对于每个程序员都是必不可少的文件处理是一种用于创建文件、写入数据和从中读取数据的过程,Python 拥有丰富的用于处理不同文件类型的包,从而使得我们可以更加轻松方便的完成文件处理的工作本文...
    99+
    2023-05-14
    代码 Python 读取文件
  • python基础之文件处理知识总结
    目录一、open()方法二、read()方法三、readlines()方法四、seek()方法五、tell()函数  一、open()方法 python open...
    99+
    2024-04-02
  • Python操作JSON文件的知识点整理
    目录json 模块读取 JSON写入 JSON读取与写入基本用法如下json 模块进阶用法控制输出格式在 JSON 中存储 Python 特殊类型对数据进行验证和清洗第三方模块jso...
    99+
    2023-01-28
    Python操作JSON知识点 Python操作JSON Python JSON
  • Python基础之元组与文件知识总结
    目录大纲Python文件类型及汇总一、元组二、文件三、pickle存储和读取python对象四、类型汇总大纲 Python文件类型及汇总 一、元组 1 特征 1.任意对象的有序集...
    99+
    2024-04-02
  • Android的文件基础知识
    内部存储和外部存储 在Android4.4以前,内部存储(Internal Storage)就是指手机机身存储,而外部存储(External Storage)则指外置SD卡。 而在Android4....
    99+
    2023-09-07
    android java 开发语言
  • python实现自动下载sftp文件
    本文实例为大家分享了python实现自动下载sftp文件的具体代码,供大家参考,具体内容如下 实现功能:利用python自动连接sftp,并下载sftp中指定目录下的所有目录及文件 ...
    99+
    2024-04-02
  • python如何使用requests下载文件
    这篇文章主要介绍了python如何使用requests下载文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。requests可以返回HTTP的meta信息。import&nb...
    99+
    2023-06-17
  • python如何使用urllib.request下载文件
    这篇文章主要为大家展示了“python如何使用urllib.request下载文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何使用urllib.request下载文件”这篇文章...
    99+
    2023-06-17
  • Python 实现多线程文件下载
    #!/root/.pyenv/shims/python # -*- coding: UTF-8 -*- import sys import requests import threading import datetime #传入的命令行参...
    99+
    2023-01-31
    多线程 文件 Python
  • python下载文件的三种方法
    # Python 2 code import urllib import urllib2 import requests                 url = 'http://192.168.1.100/test.zip'      ...
    99+
    2023-01-31
    三种 文件 方法
  • RestTemplate文件上传下载与大文件流式下载
    目录一、文件上传二、文件下载三、大文件下载本文是精讲RestTemplate第6篇,前篇的blog访问地址如下: RestTemplate在Spring或非Spring环境下使用精讲...
    99+
    2024-04-02
  • python使用wget下载网络文件
    wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。ubuntu 安装wgetpip install wget从网络或本地硬盘下载文件(并解压)# -*- coding: utf-8...
    99+
    2023-01-31
    文件 网络 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作