从一系列网址

时间:2016-06-05 15:29:20

标签: python

我试图创建一个脚本来从一系列网址中提取图像和文本。网址来自同一网站,但有不同的参数。阅读Stackoverflow和我已经创建的其他网站"一个有效的脚本,但是当我尝试制作一个序列时,我遇到了问题。

我尝试使用来制作循环并确定选项输入是否为" 1"脚本必须创建范围(00001,00002 ...),然后将其应用于URL(http://example.com/page/00001)。一切正常(甚至图像和文本提取)但它只从一个网址中提取。我试图制作一份清单或其他东西,但我还没有得到它。

以下代码可以工作,但只从一个提取:

   
def getUrl(opt, baseUrl):
    out_folder = "/monedasWiki/monedas"
    print "Instrucciones del script \n No te preocupes, no es complicado pero atiende a los pasos"
    print "Introduce 1 para obtener los archivos del 00001 al 00010"
    print "Introduce 2 para obtener los archivos del 00010 al 00099"
    print "Introduce 3 para obtener los archivos del 00100 al 00999"
    print "Introduce 4 para obtener los archivos del 01000 al 09999"
    print "Introduce 5 para obtener los archivos del 10000 al 19999"
    optSel = int(input(opt))
    # i es el rango
    # urlI es la transformacion de i en cadena
    # baseUrl es el enlace al sitio web de Pliego
    # url es la url completa con los parametros necesarios
    while True:
        if optSel == 1:
            try:
                for i in range(0,10):
                    r = str(0).zfill(4)
                    urlI = str(i)
                    print r + urlI # it's only to verify that works fine.
                    url = baseUrl + r + urlI
            except ValueError:
                print "Introduce el rango correcto"
                continue
        elif optSel == 2:
            try:
                for i in range(10,100):
                    r = str(0).zfill(3)
                    urlI = str(i)
                    print r + urlI # it's only to verify that works fine.
                    url = baseUrl + r + urlI
            except ValueError:
                print "Introduce el rango correcto"
                continue
        elif optSel < 0:
            print "Valor inferior a 0"
            continue
        else:
            print "Algo ha salido mal"
            break

        main(url, out_folder)

我只是把两个&#39; elif&#39;&#39;使代码最短。如果你能指出我错误的地方或地点,我该怎么做才能做出我想要的东西,我会感激不尽。

2 个答案:

答案 0 :(得分:1)

取决于main()的作用,如下所示:

def getUrl(opt, baseUrl):
    out_folder = "/monedasWiki/monedas"
    print "Instrucciones del script \n No te preocupes, no es complicado pero atiende a los pasos"
    print "Introduce 1 para obtener los archivos del 00001 al 00010"
    print "Introduce 2 para obtener los archivos del 00010 al 00099"
    print "Introduce 3 para obtener los archivos del 00100 al 00999"
    print "Introduce 4 para obtener los archivos del 01000 al 09999"
    print "Introduce 5 para obtener los archivos del 10000 al 19999"
    optSel = int(input(opt))
    # i es el rango
    # urlI es la transformacion de i en cadena
    # baseUrl es el enlace al sitio web de Pliego
    # url es la url completa con los parametros necesarios
    if optSel == 1:
        try:
            for i in range(0,10):
                r = str(0).zfill(4)
                urlI = str(i)
                print r + urlI # it's only to verify that works fine.
                url = baseUrl + r + urlI
                main(url, out_folder)
        except ValueError:
            print "Introduce el rango correcto"
    elif optSel == 2:
        try:
            for i in range(10,100):
                r = str(0).zfill(3)
                urlI = str(i)
                print r + urlI # it's only to verify that works fine.
                url = baseUrl + r + urlI
                main(url, out_folder)
        except ValueError:
            print "Introduce el rango correcto"
    elif optSel < 0:
        print "Valor inferior a 0"
    else:
        print "Algo ha salido mal"

答案 1 :(得分:0)

您必须在for循环内移动以下行:

main(url, out_folder)

就是这样:

while True:
    if optSel == 1:
        try:
            for i in range(0,10):
                r = str(0).zfill(4)
                urlI = str(i)
                print r + urlI
                url = baseUrl + r + urlI
                main(url, out_folder)
        except ValueError:
            print "Introduce el rango correcto"
            continue