Python 크롤러 도구 Selenium 사용 방법에 대한 자세한 설명
소개:
Python을 사용하여 동적 페이지를 크롤링하는 경우 일반 urllib2를 구현할 수 없습니다. 예를 들어 아래 JD 홈페이지는 스크롤 막대에 따라 새 콘텐츠를 로드합니다. , 그리고 urllib2는 이 콘텐츠를 크롤링할 수 없습니다. 이때 오늘의 주인공인 셀레늄이 필요합니다.
Selenium은 웹 애플리케이션 테스트를 위한 도구입니다. Selenium 테스트는 실제 사용자와 마찬가지로 브라우저에서 직접 실행됩니다. 지원되는 브라우저에는 IE, Mozilla Firefox, Mozilla Suite 등이 있습니다. 또한 페이지를 크롤링하는 데 매우 편리합니다. 사용자 작업을 시뮬레이션하기 위한 액세스 단계만 수행하면 됩니다. 쿠키 및 세션 처리에 대해 전혀 걱정할 필요가 없습니다. 비밀번호를 입력한 다음 로그인 버튼을 클릭하세요. 스크롤바 위의 경우 브라우저를 맨 아래로 스크롤하고 페이지를 저장하기만 하면 됩니다. 위의 기능은 일부 크롤러 방지 메커니즘을 처리할 때 매우 유용합니다. 다음으로 설명의 본문을 시작하고 로그인이 필요한 동적 웹페이지를 크롤링하도록 안내합니다.
케이스 구현:
셀늄을 사용하려면 호출 브라우저를 선택하고 해당 드라이버를 다운로드해야 합니다. FireFox 등을 선택할 수 있고, 서버 측에서는 PhantomJS를 사용할 수 있으며, 데스크톱 버전은 브라우저에서 직접 호출하여 변경 사항을 관찰할 수 있으므로 일반적으로 데스크톱 버전을 디버깅한 후 브라우저를 PhantomJS로 변경할 수 있습니다. Chrome 등을 서버에 업로드하여 실행합니다. 여기에서는 데모용으로 PhantomJS를 직접 사용합니다.
먼저 모듈을 가져옵니다.
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium import webdriver
Connect 아래로 내려갈 때 브라우저를 초기화합니다. 매개변수에서 로드된 웹 페이지의 일부 속성을 지정할 수 있습니다:
cap = webdriver.DesiredCapabilities.PHANTOMJS cap["phantomjs.page.settings.resourceTimeout"] = 180 cap["phantomjs.page.settings.loadImages"] = False driver = webdriver.PhantomJS(executable_path="/home/gaorong/phantomjs-2.1.1-linux-x86_64/bin/phantomjs", desired_capabilities=cap)
위의 내용은 PhantomJS를 초기화하고 브라우저의 경로를 설정합니다. loading 속성은 리소스 로딩 시간 제한을 선택하고 이미지를 로드하지 않습니다(웹 페이지 텍스트만 고려함). 여기에서 다른 설정을 선택할 수도 있습니다.
속성 설정 및 웹페이지 다운로드
driver.set_page_load_timeout(180) driver.get('http://www.php.cn/') time.sleep(5) driver.save_screenshot('./login.png') #为便于调试,保存网页的截图
서버측에서 실행시 오류는 불가피하므로, save_screenshot을 이용하여 현재 웹페이지를 저장하여 디버깅이 용이하도록 할 수 있습니다.
다음 단계는 향후 요청을 위해 웹사이트의 쿠키를 얻기 위해 로그인할 계정과 비밀번호를 입력하는 것입니다.
#输入username和password driver.find_element_by_xpath("/html/body/div[1]/div[1]/login/div[2]/div/form/input[1]").send_keys('*****') time.sleep(1) print 'input user success!!!' driver.find_element_by_xpath("/html/body/div[1]/div[1]/login/div[2]/div/form/input[2]").send_keys('****') time.sleep(1) print 'input password success!!!' driver.find_element_by_xpath("/html/body/div[1]/div[1]/login/div[2]/div/form/button").click() time.sleep(5)
위 코드는 find_element_by_xpath를 이용해 입력창의 위치를 알아내고 계정과 비밀번호를 입력한 후 로그인 버튼을 누르면 매우 편리하다는 것을 알 수 있습니다. 그러면 자동으로 다음 페이지로 넘어갑니다. 몇 초 동안 잠자기 상태로 기다리기만 하면 됩니다.
크롤링해야 하는 웹페이지 정보는 특정 요소에 있으므로 이 요소가 나타나는지 확인해야 합니다.
try: element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, 'pulses')) ) print 'find element!!!' except: print 'not find element!!!' print traceback.format_exc() driver.quit()
위에서는 'pulse' 클래스가 있는 요소가 나타나는지 여부를 결정합니다. 10초 동안 기다린 후에도 나타나지 않으면 selenum은 TimeoutError를 발생시킵니다.
위에서 기본 초기화를 수행한 후 동적 콘텐츠를 처리해야 합니다. 이 웹 페이지는 JD.com과 마찬가지로 드롭다운이 있는 콘텐츠가 자동으로 표시되므로 드롭다운 스크롤 막대를 구현해야 합니다.
print 'begin scroll to get info page...' t1 = time.time() n = 60 #这里可以控制网页滚动距离 for i in range(1,n+1): s = "window.scrollTo(0,document.body.scrollHeight/{0}*{1});".format(n,i) #输出滚动位置,网页大小,和时间 print s, len(driver.page_source),time.time()-t1 driver.execute_script(s) time.sleep(2)
여기서 드라이버.페이지_소스는 웹페이지 텍스트를 가져옵니다. 스크롤이 완료되면 이를 호출하여 파일에 쓸 수 있습니다. 이것으로 프로그램 논리가 완성됩니다.
고급:
selenim을 사용하면 일반적인 크롤러 방지 전략을 처리할 수 있습니다. 이는 사람이 웹을 탐색하는 것과 동일하지만 인증 코드를 위해서는 추가 처리가 필요하기 때문입니다. , 또 다른 점은 액세스 속도가 너무 빨라서는 안 된다는 점입니다. 결국 브라우저를 호출해야 합니다. 너무 느리면 필요하지 않을 경우 요청 라이브러리를 사용하여 작업할 수 있습니다. .
다음은 참고할 수 있는 두 개의 블로그입니다. Python Crawler Tool Five: Selenium Usage and Common Functions
위 내용은 Python 크롤러 도구 Selenium 사용 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

Linux 터미널에서 Python 사용 ...

Investing.com의 크롤링 전략 이해 많은 사람들이 종종 Investing.com (https://cn.investing.com/news/latest-news)에서 뉴스 데이터를 크롤링하려고합니다.
