계속 진행하기 전에 Selenium 및 Python에서 파일이 다운로드되기를 기다리는 방법

MontyP
print('Hello world!')

셀레늄을 사용하여 Chrome에서 파일을 다운로드하려고합니다. 파일을 다운로드 할 때마다 'TCBT'로 시작하지만 나머지 파일 이름은 매번 달라집니다. 그 파일 하나만 다운로드하고 싶습니다.

파일을 다운로드하기 위해 마지막 클릭을 눌렀을 때 흥미로운 일이 발생합니다. 웹 사이트가 더 느리고 파일이 더 커져서 다운로드를 클릭하면 결정 불가능한 시간 (20-60 초)이 걸립니다. 그런 다음 10-30 초가 더 걸리는 파일 다운로드를 시작하는 팝업 창이 나타납니다.

파일 다운로드가 완료되는시기를 식별하기 위해 여러 가지 무한 루프를 시도했지만 항상 루프에 갇히거나 건너 뜁니다. 내가 원하는 것을 찾기 위해 glob을 사용할 수 있기 때문에 파일 이름과 관련이 있다고 생각합니다. 몇 가지 예를 참조하십시오.

한 번의 시도 :

while True:
download_folder = os.path.expanduser('~')+'/Downloads/'
filenames = glob.glob(download_folder+'TCBT*')
for name in filenames:
    if name.endswith('.crdownload'):
        time.sleep(1)
    if name.endswith('.xls'):
        break
    else:
        continue

이것은 무슨 일이 있어도 계속 반복됩니다. 처음 20-60 초 동안 (팝업이 다운로드를 시작하기를 기다리는 동안) 파일이 없기 때문에 "계속"부분을 사용하여 돌아가서 파일 이름을 얻으려고합니다.

또한 온라인에서 찾은 기능을 사용해 보았습니다.

def download_wait(directory, timeout, nfiles=None):
    """
    Wait for downloads to finish with a specified timeout.

    Args
    ----
    directory : str
        The path to the folder where the files will be downloaded.
    timeout : int
        How many seconds to wait until timing out.
    nfiles : int, defaults to None
        If provided, also wait for the expected number of files.

    """
    seconds = 0
    dl_wait = True
    while dl_wait and seconds < timeout:
        time.sleep(1)
        dl_wait = False
        files = os.listdir(directory)
        if nfiles and len(files) != nfiles:
            dl_wait = True

        for fname in files:
            if fname.endswith('.crdownload'):
                dl_wait = True

        seconds += 1
    return seconds

download_wait(download_folder, 30)

이것을 사용하면 아무 일도 일어나지 않고 스크립트가 완료됩니다. 나는 그것이 파일을 보지 않고 (다운로드를 시작하는 데 20-60 초가 걸리기 때문에) 폴더를 확인하고 완료한다고 가정하고 있습니다.

이 문제를 해결하는 방법에 대한 의견이 있습니까?

MontyP

여기에 내가 해결 한 방법이 있습니다. 두 번째 루프에서 벗어나려면 두 번째 휴식을 추가해야했습니다. 트리에 몇 가지 추가 :

# Wait for download
while True:
    download_folder = os.path.expanduser('~')+'/Downloads/'
    filenames = glob.glob(download_folder+'TCBT*')
    if len(filenames) > 0 and not any('.crdownload' in name for name in filenames):
        break
    for name in filenames:
        if name.endswith('.crdownload'):
            continue
        if name.endswith('.xls'):
            print('')
            print('Download complete.')
            print('')
            break
        else:
            break

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

계속하기 전에 약속을 기다리는 방법이 있습니까?

분류에서Dev

Python 및 Selenium에서 변수 텍스트를 기반으로 드롭 다운 옵션을 선택하는 방법

분류에서Dev

나머지 코드를 실행하기 전에 이미지 다운로드를 기다리는 방법

분류에서Dev

비동기 적으로 계속하기 전에 조회자 응답이 처리되기를 기다리는 방법 (fs.writeFile에 의해)

분류에서Dev

계속 진행하기 전에 http 요청이 완료 될 때까지 기다리는 방법은 무엇입니까?

분류에서Dev

진행하기 전에 Java를 기다리는 방법

분류에서Dev

파일을 저장하고 다운로드하기 전에 원하는 위치로 이동하는 방법 (python, selenium)? 크롬 웹 드라이버 사용

분류에서Dev

계속하기 전에 비동기 호출이 성공할 때까지 for 루프를 기다리는 방법

분류에서Dev

json 파일 가져 오기에서 데이터를 기다린 다음 계속하는 방법

분류에서Dev

계속하기 전에 비동기 콜백 메서드를 기다리는 방법은 무엇입니까?

분류에서Dev

페이지에서 다운로드를 기다리게 만드는 wget으로 파일을 다운로드하는 방법은 무엇입니까?

분류에서Dev

프로그램이 Java에서 계속 실행되기 전에 이벤트가 완료 될 때까지 기다리는 방법

분류에서Dev

Firebase 저장소에 이미지를 업로드하고 계속하기 전에 URL이 반환 될 때까지 기다리는 방법

분류에서Dev

wget으로 웹 사이트에서 여러 파일을 다운로드하고 다음 파일을 다운로드하기 전에 다운로드 한 파일에 대한 기능을 수행하는 방법

분류에서Dev

계속 진행하기 전에 모든 iOS 블록이 실행될 때까지 기다리십시오.

분류에서Dev

계속 진행하기 전에 asynTask 반환을 기다려야하므로 문제를 일으키는 대화 상자가 표시되지 않습니다.

분류에서Dev

numpy에서 곱하기 및 합계 작업 속도를 높이는 방법

분류에서Dev

LWP :: useragent 파일을 다운로드하기 전에 파일 크기를 얻는 방법

분류에서Dev

계속하기 전에 Javascript 함수가 WebSql 트랜잭션이 완료 될 때까지 기다리는 방법

분류에서Dev

팝업을 피하면서 XML 파일을 다운로드하는 방법이 유형의 파일은 Python에서 Selenium을 사용하는 ChromeDriver 및 Chrome을 통해 컴퓨터에 해를 끼칠 수 있습니다.

분류에서Dev

현재 스레드를 계속하기 전에 이벤트가 발생하기를 기다리는 방법은 무엇입니까?

분류에서Dev

신청이 계속되기 전에 두 번째 프로세스가 완료되기를 기다리는 중

분류에서Dev

Angular는 계산을 진행하기 전에 템플릿이 업데이트되기를 기다립니다.

분류에서Dev

Selenium 및 Python을 사용하여 src 속성이 정의 될 때까지 기다리는 방법

분류에서Dev

C #에서 특성이 변경되기를 기다리는 Selenium 조건을 구현하는 방법

분류에서Dev

다운로드 진행률을 표시하기 위해 스프링 부트의 헤더에 파일 크기를 설정하는 방법은 무엇입니까?

분류에서Dev

다음 줄로 진행하기 전에 메서드가 완료 될 때까지 기다리는 방법

분류에서Dev

실행을 진행하는 것보다 배치 파일에서 파일이 닫힐 때까지 기다리는 방법

분류에서Dev

Aurelia에서 BingMaps가로드되기를 기다리는 방법

Related 관련 기사

  1. 1

    계속하기 전에 약속을 기다리는 방법이 있습니까?

  2. 2

    Python 및 Selenium에서 변수 텍스트를 기반으로 드롭 다운 옵션을 선택하는 방법

  3. 3

    나머지 코드를 실행하기 전에 이미지 다운로드를 기다리는 방법

  4. 4

    비동기 적으로 계속하기 전에 조회자 응답이 처리되기를 기다리는 방법 (fs.writeFile에 의해)

  5. 5

    계속 진행하기 전에 http 요청이 완료 될 때까지 기다리는 방법은 무엇입니까?

  6. 6

    진행하기 전에 Java를 기다리는 방법

  7. 7

    파일을 저장하고 다운로드하기 전에 원하는 위치로 이동하는 방법 (python, selenium)? 크롬 웹 드라이버 사용

  8. 8

    계속하기 전에 비동기 호출이 성공할 때까지 for 루프를 기다리는 방법

  9. 9

    json 파일 가져 오기에서 데이터를 기다린 다음 계속하는 방법

  10. 10

    계속하기 전에 비동기 콜백 메서드를 기다리는 방법은 무엇입니까?

  11. 11

    페이지에서 다운로드를 기다리게 만드는 wget으로 파일을 다운로드하는 방법은 무엇입니까?

  12. 12

    프로그램이 Java에서 계속 실행되기 전에 이벤트가 완료 될 때까지 기다리는 방법

  13. 13

    Firebase 저장소에 이미지를 업로드하고 계속하기 전에 URL이 반환 될 때까지 기다리는 방법

  14. 14

    wget으로 웹 사이트에서 여러 파일을 다운로드하고 다음 파일을 다운로드하기 전에 다운로드 한 파일에 대한 기능을 수행하는 방법

  15. 15

    계속 진행하기 전에 모든 iOS 블록이 실행될 때까지 기다리십시오.

  16. 16

    계속 진행하기 전에 asynTask 반환을 기다려야하므로 문제를 일으키는 대화 상자가 표시되지 않습니다.

  17. 17

    numpy에서 곱하기 및 합계 작업 속도를 높이는 방법

  18. 18

    LWP :: useragent 파일을 다운로드하기 전에 파일 크기를 얻는 방법

  19. 19

    계속하기 전에 Javascript 함수가 WebSql 트랜잭션이 완료 될 때까지 기다리는 방법

  20. 20

    팝업을 피하면서 XML 파일을 다운로드하는 방법이 유형의 파일은 Python에서 Selenium을 사용하는 ChromeDriver 및 Chrome을 통해 컴퓨터에 해를 끼칠 수 있습니다.

  21. 21

    현재 스레드를 계속하기 전에 이벤트가 발생하기를 기다리는 방법은 무엇입니까?

  22. 22

    신청이 계속되기 전에 두 번째 프로세스가 완료되기를 기다리는 중

  23. 23

    Angular는 계산을 진행하기 전에 템플릿이 업데이트되기를 기다립니다.

  24. 24

    Selenium 및 Python을 사용하여 src 속성이 정의 될 때까지 기다리는 방법

  25. 25

    C #에서 특성이 변경되기를 기다리는 Selenium 조건을 구현하는 방법

  26. 26

    다운로드 진행률을 표시하기 위해 스프링 부트의 헤더에 파일 크기를 설정하는 방법은 무엇입니까?

  27. 27

    다음 줄로 진행하기 전에 메서드가 완료 될 때까지 기다리는 방법

  28. 28

    실행을 진행하는 것보다 배치 파일에서 파일이 닫힐 때까지 기다리는 방법

  29. 29

    Aurelia에서 BingMaps가로드되기를 기다리는 방법

뜨겁다태그

보관