반응형
반응형

Python 3.14는 C++보다 빠를 것입니다

https://towardsdatascience.com/python-3-14-will-be-faster-than-c-a97edd01d65d

 

Python 3.14 will be faster than C++

Benchmarking the new and impressive Python 3.11

towardsdatascience.com

새롭고 인상적인 Python 3.11 벤치마킹

Python은 데이터 과학(DS) 및 기계 학습(ML)에서 가장 많이 사용되는 스크립팅 언어 중 하나입니다. ' 프로그래밍 언어의 인기도 '에 따르면 Python은 Google에서 가장 많이 검색되는 언어입니다. 다양한 DS/ML 솔루션을 함께 연결 하는 훌륭한 글루 언어일 뿐만 아니라 데이터로 거의 모든 작업을 수행할 수 있는 많은 라이브러리가 있습니다.

약 한 달 후에 우리는 Python의 새로운 연간 릴리스: 버전 3.11을 얻습니다. 이 버전의 주요 기능은 속도가 크게 향상되었기 때문에 이 새 버전에 대해 매우 흥분됩니다.

LinkedIn에서 나는 이미 새 버전을 테스트하는 두 사람의 게시물을 보았고 그 결과는 놀라웠습니다. 그러나 Python 3.11이 진정으로 얼마나 빠른지 느낄 수 있는 가장 좋은 방법은 테스트를 직접 실행하는 것입니다.

이 게시물에서는 Python 3.11에 대한 단계별 분석을 공유합니다. 모든 코드는 내 github 페이지 에서 사용할 수 있습니다 .

Unsplash  Spencer Davis 사진

프로그래밍 언어를 벤치마킹하는 것은 결코 쉬운 일이 아닙니다. x 가 y 보다 빠르다는 것을 읽을 때 항상 결과를 소금 한 알로 받아들여야 합니다. 알고리즘의 한 구현은 x 보다 더 좋을 수 있고 다른 구현은 y 에서 더 나을 수 있습니다 . 벤치마크의 경우 Python에 대해 Python을 테스트할 때 조금 더 간단하지만 약간만 영향을 받는 언어의 요소를 선택했을 수 있습니다. 이를 염두에 두고 내가 벤치마킹에 사용한 알고리즘인 Monte Carlo 방법을 사용한 Pi 추정을 제시하고자 합니다.

이 알고리즘의 아이디어는 간단하지만 대학에서 수학 과정에서 처음 보았을 때 마음이 흔들렸습니다. 크기가 2r 인 정사각형이 있고 이 정사각형에 반지름이 r 인 원을 맞춥니다 . 이제 평면에서 숫자를 생성하는 난수 생성기를 사용합니다. <-r, r>, <-r, r> . 원에 있는 점과 정사각형에 있는 점 사이의 비율(읽기: 모든 점)은 면적 비율의 근사치로 Pi를 근사하는 데 사용할 수 있습니다. 이것은 방정식에서 조금 더 명확합니다.

그림 1: Pi를 추정하기 위한 Monte Carlo 방법의 파생. 두 영역 간의 비율은 Pi/4이므로 Pi는 N_circle/N_all의 약 4배입니다. (저자의 이미지).

Python에서는 테스트를 반복하고 평균을 취할 수 있도록 테스트 스크립트에서 실제 추정치를 분할했습니다. 여기에 표시되지는 않았지만 명령줄 인터페이스(CLI)에서 인수를 구문 분석하는 표준 라이브러리인 Argparse 를 사용하여 스크립트를 매개변수화했습니다 . Python 코드는 다음과 같습니다.

def estimate_pi(
    n_points: int,
    show_estimate: bool,
) -> None:
    """
    Simple Monte Carlo Pi estimation calculation.
    Parameters
    ----------
    n_points
        number of random numbers used to for estimation.
    show_estimate
        if True, will show the estimation of Pi, otherwise
        will not output anything.
    """
    within_circle = 0

    for _ in range(n_points):
        x, y = (random.uniform(-1, 1) for v in range(2))
        radius_squared = x**2 + y**2

        if radius_squared <= 1:
            within_circle += 1

    pi_estimate = 4 * within_circle / n_points

    if not show_estimate:
        print("Final Estimation of Pi=", pi_estimate)


def run_test(
    n_points: int,
    n_repeats: int,
    only_time: bool,
) -> None:
    """
    Perform the tests and measure required time.
    Parameters
    ----------
    n_points
        number of random numbers used to for estimation.
    n_repeats
        number of times the test is repeated.
    only_time
        if True will only print the time, otherwise
        will also show the Pi estimate and a neat formatted
        time.
    """
    start_time = time.time()

    for _ in range(n_repeats):
        estimate_pi(n_points, only_time)

    if only_time:
        print(f"{(time.time() - start_time)/n_repeats:.4f}")
    else:
        print(
            f"Estimating pi took {(time.time() - start_time)/n_repeats:.4f} seconds per run."
        )
view rawsingle_test_run_PARTLY.py hosted with ❤ by GitHub

이 스크립트는 실행할 준비가 되었지만 현재 설치된(또는 활성화된) 버전뿐만 아니라 다양한 버전의 Python을 테스트하는 데 이 스크립트를 사용하려고 합니다. 여러 버전의 Python을 테스트하는 가장 쉬운 방법은 Docker를 사용하는 것입니다. Python은 많은 도커 이미지를 유지 관리 합니다. 당연히 모든 버전이 지원되지만 2.7 또는 3.2와 같은 EOL(End-of-Life) 버전도 지원됩니다. 버전 3.11과 같은 릴리스 후보에 대한 이미지도 있습니다. Docker를 사용하려면 Docker가 설치되어 있어야 합니다. Linux와 Mac에서는 비교적 쉽습니다. Windows에서는 확실하지 않지만 어렵지는 않을 것입니다. 도커 CLI만 설치하는 것이 좋습니다. 데스크탑은 저에게 너무 부풀려져 있습니다. 컨테이너화된 Python 환경에서 로컬 스크립트를 실행하려면 다음을 실행하십시오.

도커 실행 -it --rm \ 
  -v $PWD/your_script.py:/your_script.py \ 
  python:3.11-rc-slim \ 
  python /yourscript.py

다양한 버전에 대한 테스트를 자동화하기 위해 물론 Python도 사용합니다. 이 스크립트는 특정 Python 버전으로 컨테이너를 시작하는 하위 프로세스 를 시작하고 나중에 결과를 수집합니다. 특별한 것은 없습니다:

def test_version(image: str) -> float:
    """
    Run single_test on Python Docker image.
    Parameter
    ---------
    image
        full name of the the docker hub Python image.
    Returns
    -------
    run_time
        runtime in seconds per test loop.
    """
    output = subprocess.run([
            'docker',
            'run',
            '-it',
            '--rm',
            '-v',
            f'{cwd}/{SCRIPT}:/{SCRIPT}',
            image,
            'python',
            f'/{SCRIPT}',
            '--n_points',
            str(N_POINTS),
            '--n_repeats',
            str(N_REPEATS),
            '--only-time',
        ],
        capture_output=True,
        text=True,
    )

    avg_time = float(output.stdout.strip())

    return avg_time


# Get test time for current Python version
base_time = test_version(NEW_IMAGE['image'])
print(f"The new {NEW_IMAGE['name']} took {base_time} seconds per run.\n")

# Compare to previous Python versions
for item in TEST_IMAGES:
    ttime = test_version(item['image'])
    print(
        f"{item['name']} took {ttime} seconds per run."
        f"({NEW_IMAGE['name']} is {(ttime / base_time) - 1:.1%} faster)"
    )
view rawrun_main_test_py11.py hosted with ❤ by GitHub

이러한 테스트를 실행할 때 절대값은 프로세서(CPU 과중)에 따라 시스템마다 다릅니다. 다음은 마지막 7개의 주요 Python 버전에 대한 결과입니다.

새로운 Python 3.11은 실행당 6.4605초가 걸렸습니다.Python 3.5는 11.3014초가 소요되었습니다.(Python 3.11은 74.9% 빠름) 
Python 3.6은 11.4332초가 소요되었습니다.(Python 3.11은 77.0% 더 빠름) 
Python 3.7은 10.7465초가 소요되었습니다 
. (Python 3.11은 74.9% 빠름) 3.11은 65.5% 빠름) 
Python 3.9는 10.9537초가 소요되었습니다.(Python 3.11은 69.5% 빠름) 
Python 3.10은 8.8467초가 소요되었습니다.(Python 3.11은 36.9% 빠름)

벤치마크는 Python 3.11의 경우 평균 6.46초가 소요되었습니다. 이를 이전 버전(3.10)과 비교하면 거의 37% 더 빠릅니다. 꽤 인상적입니다! 버전 3.9와 3.10 간에 거의 동일한 차이가 있어 3.11이 거의 70% 빨라졌습니다! 나는 그림 2에서 모든 시간을 플로팅했습니다.

그림 2: 테스트한 모든 Python 버전의 평균 루프 시간. (저자의 이미지).

속도에 대해 이야기할 때 항상 한 사람이 말합니다. 속도를 원하면 C를 사용하지 마십시오.

C는 Python보다 훨씬 빠릅니다! — 그 한 사람

내 C는 녹슬었지만 어쨌든 시도해 볼 생각입니다. 좋은 시간 측정 라이브러리(크로노)와 함께 제공되는 GNU C++를 사용했습니다. 아래 코드를 찾으십시오.

#include <stdlib.h>
#include <stdio.h>
#include <chrono>
#include <array>

#define N_POINTS 10000000
#define N_REPEATS 10

float estimate_pi(int n_points) {
   double x, y, radius_squared, pi;
   int within_circle=0;

   for (int i=0; i < n_points; i++) {
      x = (double)rand() / RAND_MAX;
      y = (double)rand() / RAND_MAX;

      radius_squared = x*x + y*y;
      if (radius_squared <= 1) within_circle++;
   }

   pi=(double)within_circle/N_POINTS * 4;
   return pi;
}

int main() {
    double avg_time = 0;

    srand(42);

    for (int i=0; i < N_REPEATS; i++) {
        auto begin = std::chrono::high_resolution_clock::now();
        double pi = estimate_pi(N_POINTS);
        auto end = std::chrono::high_resolution_clock::now();
        auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin);
        avg_time += elapsed.count() * 1e-9;
        printf("Pi is approximately %g and took %.5f seconds to calculate.\n", pi, elapsed.count() * 1e-9);
    }

    printf("\nEach loop took on average %.5f seconds to calculate.\n", avg_time / N_REPEATS);
}
view rawpi_estimate.c hosted with ❤ by GitHub

우리 모두 알고 있듯이 C++는 컴파일된 언어이므로 소스를 사용하려면 먼저 컴파일해야 합니다. 일반이 build-essentials설치된 경우 다음을 입력할 수 있습니다.

g++ -o pi_estimate pi_estimate.c

컴파일 후 빌드 실행 파일을 실행하기만 하면 됩니다. 출력은 다음과 같아야 합니다.

Pi는 약 3.14227이고 계산하는 데 0.25728초가 걸렸습니다. 
Pi는 약 3.14164이고 계산하는 데 0.25558초가 걸렸습니다. 
Pi는 약 3.1423이며 계산하는 데 0.25740초가 소요되었습니다. 
Pi는 약 3.14108이고 계산하는 데 0.25737초가 걸렸습니다. 
Pi는 약 3.14261이며 계산하는 데 0.25664초가 소요되었습니다.각 루프는 계산하는 데 평균 0.25685초가 걸렸습니다.

그리고 우리는 그것이 정말로 (읽기: REALLY) 빠르기 때문에 그 한 사람 과 동의해야 합니다 . 이전에 Python에서 프로그래밍한 것과 동일한 루프를 수행하는 데 0.257초밖에 걸리지 않았습니다. 이것을 그림 3과 같이 이전 플롯의 선으로 추가해 보겠습니다.

그림 3: C++로 컴파일된 동일한 벤치마크와 비교한 Python 버전. (저자의 이미지).

이제 이전 수치를 조금 더 오래 감상한 후 Python이 얻은 추진력을 분명히 볼 수 있습니다. 버전 3.9 이후로 Python은 속도가 약 35% 증가했습니다. Python 개발자는 다음 몇 가지 버전에서 상당한 속도 증가가 있을 것이라고 언급했으므로 이 속도가 유지될 것이라고 가정할 수 있습니다(  , 매우 안전한 가정).

이제 문제는 이 모멘텀이 고정된 상태에서 Python이 C++의 시간을 언제 능가할 것인가입니다. 이를 위해 우리는 물론 외삽을 사용하여 다음 Python 버전의 루프 시간을 예측할 수 있습니다. 이는 그림 4에서 볼 수 있습니다.

그림 4: Python 속도 추정 -> Python 3.14는 속도 면에서 C++를 능가합니다. 놀라운! (저자의 이미지).

결과는 정말 놀랍습니다! 이 속도를 유지하면 Python 3.14가 C++보다 빠를 것입니다. 정확히는 루프 시간이 -0.232 초가 되므로 계산을 하기 직전에 완료됩니다. 시공간 연속체에 구멍이 있는 것처럼 보이지만 이러한 계산은 확고합니다. 그러므로 우리는 아인슈타인과 친구들의 작업에 의문을 제기해야 할 수도 있다고 생각합니다.

반응형
반응형

https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

파이썬 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 이 문서는 프로그래밍 언어에 관한 것입니다. 그리스 신화의 괴물에 대해서는 피톤 문서를, 미사일에 대해서는 파이톤 5 미사일 문서를 참고하십시오. 파이썬Py

ko.wikipedia.org

파이썬[3](영어: Python)은 1991년[4] 네덜란드계 프로그래머 귀도 반 로섬[5]이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디인〈Monty Python's Flying Circus〉에서 따온 것이다. 이름에서 고대신화에 나오는 커다란 뱀을 연상하는 경우도 있겠지만, 이와는 무관하다. 다만 로고에는 뱀 두마리가 형상화되어 있다.

파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델을 가지고 있다.

 

파이썬은 초보자부터 전문가까지 사용자층을 보유하고 있다. 동적 타이핑(dynamic typing) 범용 프로그래밍 언어로,   루비와 자주 비교된다. 다양한 플랫폼에서 쓸 수 있고, 라이브러리(모듈)가 풍부하여, 대학을 비롯한 여러 교육 기관, 연구 기관 및 산업계에서 이용이 증가하고 있다. 또 파이썬은 순수한 프로그램 언어로서의 기능 외에도 다른 언어로 쓰인 모듈들을 연결하는 접착제 언어로써 자주 이용된다. 실제 파이썬은 많은 상용 응용 프로그램에서 스크립트 언어로 채용되고 있다. 도움말 문서도 정리가 잘 되어 있으며, 유니코드 문자열을 지원해서 다양한 언어의 문자 처리에도 능하다.

 
구문이 강조된 파이썬 코드 예제

파이썬은 기본적으로 해석기(인터프리터) 위에서 실행될 것을 염두에 두고 설계되었다.

  • 주요 특징
    • 동적 타이핑(dynamic typing). (실행 시간에 자료형을 검사한다.)
    • 객체의 멤버에 무제한으로 접근할 수 있다. (속성이나 전용의 메서드 훅을 만들어 제한할 수는 있음.)
    • 모듈, 클래스, 객체와 같은 언어의 요소가 내부에서 접근할 수 있고, 리플렉션을 이용한 기술을 쓸 수 있다.
  • 해석 프로그램의 종류
    • Cython: C로 작성된 인터프리터.
    • 스택리스 파이썬: C 스택을 사용하지 않는 인터프리터.
    • 자이썬: 자바 가상 머신용 인터프리터. 과거에는 제이파이썬(JPython)이라고 불렸다.
    • IronPython: .NET 플랫폼용 인터프리터.
    • PyPy: 파이썬으로 작성된 파이썬 인터프리터.

현대의 파이썬은 여전히 인터프리터 언어처럼 동작하나 사용자가 모르는 사이에 스스로 파이썬 소스 코드를 컴파일하여 바이트 코드(Byte code)를 만들어 냄으로써 다음에 수행할 때에는 빠른 속도를 보여 준다.

파이썬에서는 들여쓰기를 사용해서 블록을 구분하는 독특한 문법을 채용하고 있다. 이 문법은 파이썬에 익숙한 사용자나 기존 프로그래밍 언어에서 들여쓰기의 중요성을 높이 평가하는 사용자에게는 잘 받아들여지고 있지만, 다른 언어의 사용자에게서는 프로그래머의 코딩 스타일을 제한한다는 비판도 많다. 이 밖에도 실행 시간에서뿐 아니라 네이티브 이진 파일을 만들어 주는 C/C++ 등의 언어에 비해 수행 속도가 느리다는 단점이 있다. 그러나 사업 분야 등 일반적인 컴퓨터 응용 환경에서는 속도가 그리 중요하지 않고, 빠른 속도를 요하는 프로그램의 경우에도 프로토타이핑한 뒤 빠른 속도가 필요한 부분만 골라서 C 언어 등으로 모듈화할 수 있다(ctypes, SWIG, SIP 등의 래퍼 생성 프로그램들이 많이 있다). 또한 Pyrex, Psyco, NumPy 등을 이용하면 수치를 빠르게 연산할 수 있기 때문에 과학, 공학 분야에서도 많이 이용되고 있다. 점차적인 중요성의 강조로 대한민국에서도 점차 그 활용도가 커지고 있다.

 

https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9D%98_%EC%97%AD%EC%82%AC

 

파이썬의 역사 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 파이썬의 로고 (1990년대~2006년) 프로그래밍 언어 파이썬은 1980년대 말에 구상되었으며[1] 그 구현체는 1989년 12월[2] 예외 처리가 가능하고 아메바 운영 체제와 통

ko.wikipedia.org

 
파이썬의 로고 (1990년대~2006년)

프로그래밍 언어 파이썬은 1980년대 말에 구상되었으며[1] 그 구현체는 1989년 12월[2] 예외 처리가 가능하고 아메바 운영 체제와 통신이 가능한 ABC의 후속 프로그래밍 언어로서 CWI(Centrum Wiskunde & Informatica)의 귀도 반 로섬에 의해 시작되었다.[3]

파이썬 2.0은 2000년 10월 16일 출시되었으며 메모리 관리를 위한 사이클 감지 쓰레기 수집기(참조 카운팅뿐 아니라), 유니코드 지원을 포함한 새롭고 수많은 주요 기능들이 포함되었다. 그러나 가장 중대한 변화는 개발 프로세스 그 자체로서, 더 투명하고 공동체의 지원을 받는 프로세스로의 전환이다.[4]

파이썬 3.0은 메이저급의 하위 호환성이 없는 릴리스로서 2008년 12월 3일 출시되었으며[5] 이는 수많은 테스트 기간을 거친 뒤에 개발되었다. 주요 기능들 중 다수가 하위 호환이 가능한 파이썬 2.6, 2.7로 백포팅되고 있다.[6]

2018년 7월 12일, 귀도 반 로섬은 리더의 자리에서 내려왔다.[7]

버전 표[편집]

출시 전 내용:

버전최신 버전발표일제품 지원 종료일보안 지원 종료일

0.9 0.9.9[2] 1991-02-20[2] 1993-07-29[a][2]
1.0 1.0.4[2] 1994-01-26[2] 1994-02-15[a][2]
1.1 1.1.1[2] 1994-10-11[2] 1994-11-10[a][2]
1.2   1995-04-13[2] 지원 안함
1.3   1995-10-13[2] 지원 안함
1.4   1996-10-25[2] 지원 안함
1.5 1.5.2[8] 1998-01-03[2] 1999-04-13[a][2]
1.6 1.6.1[8] 2000-09-05[9] 2000-09[a][8]
2.0 2.0.1[10] 2000-10-16[11] 2001-06-22[a][10]
2.1 2.1.3[10] 2001-04-15[12] 2002-04-09[a][10]
2.2 2.2.3[10] 2001-12-21[13] 2003-05-30[a][10]
2.3 2.3.7[10] 2003-06-29[14] 2008-03-11[a][10]
2.4 2.4.6[10] 2004-11-30[15] 2008-12-19[a][10]
2.5 2.5.6[10] 2006-09-19[16] 2011-05-26[a][10]
2.6 2.6.9[17] 2008-10-01[17] 2010-08-24[b][17] 2013-10-29[17]
2.7 2.7.18[18] 2010-07-03[18] 2020-01-01[c][18]
3.0 3.0.1[10] 2008-12-03[17] 2009-02-13[19]
3.1 3.1.5[20] 2009-06-27[20] 2011-06-12[21] 2012-06[20]
3.2 3.2.6[22] 2011-02-20[22] 2013-05-13[b][22] 2016-02-20[22]
3.3 3.3.7[23] 2012-09-29[23] 2014-03-08[b][23] 2017-09-29[23]
3.4 3.4.10[24] 2014-03-16[24] 2017-08-09[25] 2019-03-18[a][24]
3.5 3.5.10[26] 2015-09-13[26] 2017-08-08[27] 2020-09-13[28]
3.6 3.6.12[29] 2016-12-23[29] 2018-12-24[b][29] 2021-12[29]
3.7 3.7.9[30] 2018-06-27[30] 2020-06-27[b][30] 2023-06[30]
3.8 3.8.6[31] 2019-10-14[31] 2021-04[31] 2024-10[31]
3.9 3.9.0[32] 2020-10-05[32] 2022-05[33] 2025-10[32][33]
3.10 3.10.0[34] 2021-10-25[34] 2023-05[34] 2026-10[34]
범례:
오래된 버전
오래된 버전, 지원 중
최신 버전
최신 미리보기 버전
배포 예정
 
 

내용주:

  1.  이동:            최신 버전 발표일
  2.  이동:     최신 비보안 전용 발표 날짜
  3.  공식 지원은 2020-01-01에 종료되었지만 2.7.18를 2020-04-20에 발표.[18]

차트[편집]

반응형
반응형

어린이를 위한 파이썬 교육용 서버리스 주피터 노트북 앱 만들기, 신정규 - PyCon Korea 2022

https://youtu.be/B975CbAJAy8

 

반응형
반응형

 

PyCon.KR 2022

https://youtube.com/playlist?list=PLZPhyNeJvHRn5DjhDAZFTKjJCJSMqeirO 

 

PyCon.KR 2022

 

www.youtube.com

 

반응형
반응형

예전 방식이라 잘되지 않는다. 

다른 url로 했을때 데이터는 잘 가져왔다. 

css 보안이 걸려있는듯. 

 

##  인스타그램 이미지 크롤링
#    
##
import os
import sys
import konlpy
import pandas as pd
import numpy as np
os.environ['JAVA_OPTS'] = 'Xmx4096M'
    
## 시간 표시  ##################################### 
import time
import datetime
now = datetime.datetime.now()

timeserise = time.time()
timeserise = str(int(timeserise))
print(timeserise)
print(now)
#################################################  


#작업하는 경로(위치)가 어디인지 확인
print(os.getcwd())

prePath = "./Project/instagram_cr/"
file_name = prePath + "outputfile0.txt" 

# 라이브러리 추가
from bs4 import BeautifulSoup  #불러온 데이터를 구분지어 원라는 데이터 출력
from selenium import webdriver #Chromedriver를 사용하여, 자동화 시스템 구동
## chrome 버전 안맞으면 아래와 같은 에러 발생함. chromedriver 버전 확인 필수
#  selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 94
# Current browser version is 105.0.5195.102 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe
# 
# GoUrl : https://chromedriver.storage.googleapis.com/index.html?path=105.0.5195.52/
##


from urllib.request import urlopen
from urllib.parse  import quote_plus # ASCII 형태로 자동 변형
import requests
import shutil
 


testurl_01 = "https://www.instagram.com/explore/tags/"
testurl_02 = input("Please input the word to search for : ")
testurl_03 = testurl_01 + quote_plus(testurl_02)


print(testurl_03)

## 아래 오류때문에 추가함. options
#  USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: 시스템에 부착된 장치가 작동하지 않습니다. 
## options start
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
#browser = webdriver.Chrome(options=options)
## options end 

#driver_01 = webdriver.Chrome()
driver_01 = webdriver.Chrome(options=options)
driver_01.get(testurl_03)

html_01 = driver_01.page_source
#print(html_01)

Source_01 = BeautifulSoup(html_01,"html.parser")
#Source_01 = BeautifulSoup(html_01,"lxml")
#Source_01 = BeautifulSoup(html_01)

time.sleep(5)

#print(Source_01)
print(Source_01.prettify())
 
o = open(prePath +'result_list.txt', 'w', encoding='utf-8')
o.write("")
o.write(Source_01.prettify())
o.close()    




var_list = [1, 3, 5, 7, 9]
for ii in var_list:
    print("----------------------------------------")


Demo_insta = Source_01.select('._a3wf._-kb.segoe') 
print(Demo_insta)

for each_div in Source_01.findAll('div',{'class':'list'}):
    print(each_div)


"""
x_1 = 1

for i in Demo_insta:
    print("https://www.instagram.com/" + i.a['href'])
    #img_01 = i.select_one('_aagt').img['src']
    #print(img_01)
"""

driver_01.close()
반응형
반응형

로컬 크롬 버전 확인 : chrome://version/

 

크롬드라이브 다운로드       https://sites.google.com/a/chromium.org/chromedriver/downloads  

 

반응형

+ Recent posts