python Requsets下载开源网站的代码(带索引 数据)

 更新时间:2021年04月14日 10:23:49   作者:TTMer  
这篇文章主要介绍了python Requsets下载开源网站的代码(带索引 数据),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

环境搭建

python 3.x
requests 包
re 包
gooey包 (用于可视化)

代码

import requests
import re
import os
from gooey import Gooey, GooeyParser
import time

s = requests.Session()

def judgeTypeOfPath(name):
    '''
    判断该路径是文件还是文件夹
      :param name: 路径名称
      :return:True->文件;False->文件夹
    '''
    if name[-1] == '/':
        return False
    else:
        return True


def makeDirOfPath(path):
    '''
    创建文件夹
    :param path: 文件夹名称以及路径
    :return: True->创建成功;False->创建失败
    '''
    if not os.path.isdir(path):
        os.mkdir(path)
    if not os.path.isdir(path):
        return False
    return True

def getPath(url):
    '''
    获取网页路径列表
    :param url: 当前网页路径
    :return: 路径列表
    '''
    baseResponse = s.get(url=url, stream=True,verify=False).text
    listOfDirOrFilesTemp = re.findall(r'<li><a href=".*?" rel="external nofollow" >', baseResponse)
    listOfDirOrFiles = []
    for i in range(len(listOfDirOrFilesTemp)):
        listOfDirOrFiles.append(listOfDirOrFilesTemp[i].split("\"")[1])
    return listOfDirOrFiles[1:len(listOfDirOrFiles) + 1]

def rfSearch(listOfPath,url, nowPath):
    '''
    递归寻找目录、路径,并下载文件
    :param listOfPath: 当前目录下文件以及文件夹目录列表
    :param nowPath: 现在所在路径
    :return:
    '''
    newList = listOfPath[:]
    if not newList:
        return
    for i in range(len(newList)):
        if not judgeTypeOfPath(newList[i]):
            u = nowPath + newList[i][0:len(newList[i])]
            makeDirOfPath(u)
            tempPath=nowPath + newList[i][0:len(newList[i])+1]
            tempUrl=url+newList[i][0:len(newList[i])+1]
            u=getPath(tempUrl)
            rfSearch(u,tempUrl,tempPath)
        else:
            print(f'开始下载{newList[i]}...')
            t1=time.time()
            u = nowPath + newList[i]
            m=url+newList[i]
            if not os.path.exists(u):
                r = s.get(m, stream=True,verify=False)
                f = open(u, "wb")
                for chunk in r.iter_content(chunk_size=10240):
                    if chunk:
                        f.write(chunk)
                f.close()
            t2=time.time()
            print(f'{newList[i]}下载完成\t\t用时  {t2-t1}')

@Gooey(
    program_name='isric数据下载器',
    encoding="utf-8", )
def main():
    parser = GooeyParser(description="isric数据下载器")
    parser.add_argument('--url',default=r'https://files.isric.org/soilgrids/latest/data/')
    parser.add_argument('--path', widget="DirChooser", default=r'F:/isricData/')
    args = parser.parse_args()
    url=args.url
    nowPath = args.path
    u = getPath(url)
    rfSearch(u, url,nowPath)
###如果不需要可视化,则不用gooey,可以将上面部分替换如下
#@Gooey(
#    program_name='isric数据下载器',
#   encoding="utf-8", )
#上面三行删除即可
###main函数替换成下面部分:
# def main():
#     url=r'https://files.isric.org/soilgrids/latest/data/'#在此处修改地址链接
#     nowPath = r'F:/isricData/'#在此处修改文件保存地址
#     u = getPath(url)
#     rfSearch(u, url,nowPath)

if __name__ == "__main__":
    main()

到此这篇关于python Requsets下载开源网站的代码(带索引 数据)的文章就介绍到这了,更多相关python Requsets下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用Python函数实现一个万历表完整示例

    利用Python函数实现一个万历表完整示例

    这篇文章主要给大家介绍了关于如何利用Python函数实现一个万历表的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python with关键字,上下文管理器,@contextmanager文件操作示例

    Python with关键字,上下文管理器,@contextmanager文件操作示例

    这篇文章主要介绍了Python with关键字,上下文管理器,@contextmanager文件操作,结合实例形式分析了Python使用with关键字及上下文管理器、contextmanager进行文件打开、读写、关闭等操作的相关实现技巧,需要的朋友可以参考下
    2019-10-10
  • 对Python协程之异步同步的区别详解

    对Python协程之异步同步的区别详解

    今天小编就为大家分享一篇对Python协程之异步同步的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python使用__new__()方法为对象分配内存及返回对象的引用示例

    Python使用__new__()方法为对象分配内存及返回对象的引用示例

    这篇文章主要介绍了Python使用__new__()方法为对象分配内存及返回对象的引用,结合实例形式分析了Python对象初始化及内存操作相关使用技巧,需要的朋友可以参考下
    2019-09-09
  • Window版下在Jupyter中编写TensorFlow的环境搭建

    Window版下在Jupyter中编写TensorFlow的环境搭建

    这篇文章主要介绍了Window版下在Jupyter中编写TensorFlow的环境搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python机器学习创建基于规则聊天机器人过程示例详解

    python机器学习创建基于规则聊天机器人过程示例详解

    这篇文章主要为大家介绍了python实现基于规则聊天机器人的过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-11-11
  • Python PaddleGAN实现照片人物性别反转

    Python PaddleGAN实现照片人物性别反转

    PaddleGAN中的styleganv2editing.py是支持性别编辑的。所以本文将介绍如何通过调整参数,来试着实现一下照片的性别翻转。感兴趣的小伙伴可以学习一下
    2021-12-12
  • Pandas数据分析之批量拆分/合并Excel

    Pandas数据分析之批量拆分/合并Excel

    怎样将一个大的Excel拆分,或者将很多小Excel文件合并?下面这篇文章主要给大家介绍了关于Pandas数据分析之批量拆分/合并Excel的相关资料,需要的朋友可以参考下
    2021-09-09
  • pyqt5数据库使用详细教程(打包解决方案)

    pyqt5数据库使用详细教程(打包解决方案)

    这篇文章主要介绍了pyqt5数据库使用教程(打包解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Python如何输出异常信息(行号)

    Python如何输出异常信息(行号)

    这篇文章主要介绍了Python如何输出异常信息(行号)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论