从一系列URL中提取图像和文本

2024-06-01 08:20:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个脚本,从一系列URL中提取图像和文本。URL来自同一个网站,但参数不同。阅读Stackoverflow和其他网站我已经“创建”了一个脚本,工作,但我有一个问题,当我试图使一个序列

我尝试使用while来创建循环,并确定如果选项输入为“1”,则脚本必须创建一个范围(00001、00002…),然后将其应用于url(http://example.com/page/00001)。一切正常(甚至图像和文本提取),但它只从一个url提取。我试着列个单子或别的什么东西,但我没弄明白

以下是代码,但仅从其中一个代码中提取:

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)

我只是加了两个“elif”来缩短代码。如果你能告诉我错在哪里,错在哪里,我该怎么做才能得到我想要的,我会很感激的


Tags: urleselalprintdelparastr
2条回答

必须在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

根据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"

相关问题 更多 >