0

I use code to download images with threading.

def openUrlHours(driver, urlBase, listTag, listValue, tagA, tagImg):
    ...
    for hrefHour in hrefHours:
        openUrlMinutes(driver, urlBase, listTag, listValue, tagA, tagImg)

def openUrlMinutes(driver, urlBase, listTag, listValue, tagA, tagImg):
    ...
    for hrefMinute in hrefMinutes:
        openUrlSeconds(driver, listTag, listValue, tagImg)

def openUrlSeconds(driver, listTag, listValue, tagImg):
    ...
    imageSeconds = soup.find("ul", id="grid").find_all("img")
    ts = []
    for imageSecond in imageSeconds:
        ...
        t = createNewDownloadThread(driver, urlImage, pathImage)
        t.daemon = True
        t.start()
        ts.append(t)
    for t in ts:
        t.join()

def createNewDownloadThread(driver, urlImage, pathImage):
    downloadThread = threading.Thread(target=downloadImage, args=(driver, urlImage, pathImage))
    return downloadThread

def downloadImage(driver, urlImage, pathImage):
    ...

This code worked well but I want to speed up so I tried code as below(only show modified).

def openUrlHours(driver, urlBase, listTag, listValue, tagA, tagImg):

def openUrlMinutes(driver, urlBase, listTag, listValue, tagA, tagImg):
    ...
    ts = []
    for hrefMinute in hrefMinutes:
        ...
        t = createOpenUrlSecondsThread(driver, listTag, listValue, tagImg)
        t.daemon = True
        t.start()
        ts.append(t)
    for t in ts:
        t.join()

def createOpenUrlSecondsThread(driver, listTag, listValue, tagImg):
    OpenUrlSecondsThread = threading.Thread(target=openUrlSeconds, args=(driver, listTag, listValue, tagImg))
    return OpenUrlSecondsThread

def openUrlSeconds(driver, listTag, listValue, tagImg):

def createNewDownloadThread(driver, urlImage, pathImage):

def downloadImage(driver, urlImage, pathImage):

Now I got error, I think it is not so easy to use threads nest, what can I do next?

Exception in thread Thread-24:
    self.run()
    self._target(*self._args, **self._kwargs)
    imageSeconds = imageSeconds = soup.find("ul", id="grid").find_all("img")
    return soup.find(listTag, id=listValue).find_all(urlTag)
AttributeError: 'NoneType' object has no attribute 'find_all'    
mikezang
  • 2,291
  • 7
  • 32
  • 56

0 Answers0