鱼C论坛

 找回密码
 立即注册
查看: 776|回复: 8

关于python的一些问题

[复制链接]
发表于 2018-7-20 14:23:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在CSDN下载了一个批量下载器,用python写的,但是不知道如何操作,求助
代码贴上


import sys
import xlrd
import requests
import threading
import os


def ver():
    print("BatchDownloader v1.0")
    print(" 它是一个Python写的小工具,可以通过HTTP协议批量下载文件,并重新命名。")
    print(" 参数说明:<任务文件>,[下载文件存储目录],[线程数],[开始记录],[结束记录])")
    print(" 任务文件:必填参数,使用Excel文件,在第一个sheet中需要包含两列,第一列为下载文件后存储的名称,第二列为下载文件的URL地址。")
    print(" 下载文件存储目录:可选参数,默认值是程序运行的当前目录。")
    print(" 线程数:可选参数,可以设置用几个线程下载数据文件,默认值是5。")
    print(" 开始记录:可选参数,可以设置从第几条数据开始下载。默认值是0。")
    print(" 结束记录:可选参数,可以设置到第几条数据停止下载。默认值是总文件的总记录数。")


def down(path,filename,url):
    if len(url)>0:
        file_extension=os.path.splitext(url)[1] ;

    if os.path.exists(path + filename + file_extension):
        print(filename + " 已经下载.")
    else:
        try:
            print(filename + " 下载中...")
            r = requests.get(url)
            with open(path + filename + file_extension, "wb") as code:
                code.write(r.content)
            print(filename + " 下载成功.")
        except:
            print(filename + " 下载失败.")

if len(sys.argv)<2:
    ver()
else:
    filename = sys.argv[1]
    if os.path.exists(filename):
        book = xlrd.open_workbook(filename)
        sheet0 = book.sheet_by_index(0)
        nrows = sheet0.nrows  # 获取行总数

        if len(sys.argv) > 2:
            path = sys.argv[2]
        else:
            path = "./"

        if len(sys.argv) > 3:
            threadNum = int(sys.argv[3])
        else:
            threadNum = 5

        if len(sys.argv) > 4:
            startID = int(sys.argv[4])
        else:
            startID = 0

        if len(sys.argv) > 4:
            endID = int(sys.argv[5])
        else:
            endID = nrows-1
        print("任务Excel文件:"+filename)
        print("下载文件存储目录:" + path)
        print("线程数:" + str(threadNum))
        print("开始记录:" + str(startID))
        print("结束记录:" + str(endID))


        book = xlrd.open_workbook(filename)
        sheet0 = book.sheet_by_index(0)
        nrows = sheet0.nrows    # 获取行总数

        print("总记录数:" + str(nrows) + "条")
        print("开始下载文件...")


        for x in range(startID,endID,threadNum):
            threads = []
            for i in range(0,threadNum):
                #print(x+i, end='')
                #print(",", end='')
                if x+i<=endID:
                    filename = sheet0.cell_value(x+i, 0)
                    url = sheet0.cell_value(x+i, 1)
                    threads.append(threading.Thread(target=down, args=(path, filename, url)))

            for t in threads:
                t.setDaemon(True)
                t.start()
            for t in threads:
                t.join();

        print("全部下载完成.")
    else:
        ver()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-20 14:24:11 | 显示全部楼层
如何导入自己的filename呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-20 14:34:09 | 显示全部楼层
卢文杰 发表于 2018-7-20 14:24
如何导入自己的filename呢?

看说明是建立一个excel文件
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-20 14:45:47 | 显示全部楼层
冬雪雪冬 发表于 2018-7-20 14:34
看说明是建立一个excel文件

我知道啊,文件该怎么放呢。放那里。。我放在同一文件下还是不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-20 14:50:23 | 显示全部楼层
它是采用命令行参数,cmd窗口 python 程序.py 文件.xlsx
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-20 15:29:51 | 显示全部楼层
冬雪雪冬 发表于 2018-7-20 14:50
它是采用命令行参数,cmd窗口 python 程序.py 文件.xlsx

谢谢啦。。由于python 不精看不懂他的文件操作方式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-20 16:41:06 | 显示全部楼层
冬雪雪冬 发表于 2018-7-20 14:34
看说明是建立一个excel文件

大佬还在吗,我要下载的东西是防止跳转的,在他的网页点击下载就能下载,但网站好像做了防跳转功能,意思就是跳转的网页能下载,但复制下载链接 另外开个网页去下载就不行,这种情况怎么模拟浏览器跳转下载呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-20 16:50:13 | 显示全部楼层
冬雪雪冬 发表于 2018-7-20 14:50
它是采用命令行参数,cmd窗口 python 程序.py 文件.xlsx

http://old.aizhongyou.com/Item/Show.asp?m=3&d=2951
比如这个下面有个下载地址,点进去能跟着下载,但一旦复制下载链接http://old.aizhongyou.com/item/d ... d=2951&downid=1
新打开网页然后复制访问就提示 非法链接,该怎么办。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-20 17:06:49 | 显示全部楼层
卢文杰 发表于 2018-7-20 16:41
大佬还在吗,我要下载的东西是防止跳转的,在他的网页点击下载就能下载,但网站好像做了防跳转功能,意思 ...

没怎么玩过爬虫,看看大佬们有什么建议。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-31 21:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表