python 파충류 의 selenium 시각 화 파충류 의 실현

selenium 파충 류 를 시각 화 파충류 라 고 부 르 는 이유
주로 앞에서 언급 한 몇 가지 웹 페이지 에 비해 분석 한 파충류 방식 이다.
selenium 파충 류 는 주로 사람의 클릭 조작 을 모 의 한다.
selenium 이 브 라 우 저 를 구동 하고 조작 하 는 과정 을 관찰 할 수 있 습 니 다.
다른 사람 이 당신 의 컴퓨터 를 조종 하 는 것 을 지 켜 보 는 것 과 비슷 합 니 다.다른 사람 이 당신 의 컴퓨터 를 원 격 으로 사용 하 는 것 과 비슷 합 니 다.
물론 selenium 에 도 인터페이스 모드 가 있 습 니 다.
쾌속 입문
selenium 기본 소개:
selenium 은 완전한 웹 응용 프로그램 테스트 시스템 입 니 다.
테스트 녹화(selenium IDE),작성 및 실행(Selenium Remote Control)포함
테스트 와 병행 처리(Selenium Grid).
Selenium 의 핵심 Selenium Core 는 JSUnit 에 기반 을 두 고 있 습 니 다.
완전히 자 바스 크 립 트 로 작성 되 었 기 때문에 자 바스 크 립 트 를 지원 하 는 모든 브 라 우 저 에 사용 할 수 있 습 니 다.
selenium 은 실제 브 라 우 저,자동화 테스트 도 구 를 모 의 하여 다양한 브 라 우 저 를 지원 합 니 다.
파충 류 는 주로 자 바스 크 립 트 렌 더 링 문 제 를 해결 하 는 데 쓰 인 다.
python 으로 파충 류 를 쓸 때 주로 selenium 의 Webdriver 를 사용 합 니 다.

#  selenium 
pip install selenium
#         
#               Selenium.Webdriver       
from selenium import webdriver
print(help(webdriver))

     :
PACKAGE CONTENTS
  android (package)  blackberry (package)  chrome (package)
  common (package)   edge (package)     firefox (package)
  ie (package)     opera (package)     phantomjs (package)
  remote (package)   safari (package)    support (package)  webkitgtk (package)
#           PhantomJS,
#PhantomJS      WebKit    JavaScript API,
#  Web         ,
#   、      Web  :Dom  ,CSS   ,JSON  。
#PhantomJS          、    、    ,       
구 글 브 라 우 저 구동 다운로드 주소
대응 하 는 버 전 번호,chrome 주소 표시 줄 입력chrome://version/ 자신의 Chrome 버 전 보기
저 는 anaconda 를 사용 해서 다운로드 해서 anaconda 3\\Scripts 폴 더 에 버 리 면 됩 니 다.
pycharm,VScode 와 같은 다른 id 라면 anaconda 의 통합 python 을 불 러 올 수 있 습 니 다.
단순 테스트

from selenium import webdriver
# #       
browser1 = webdriver.Chrome()
browser2 = webdriver.Firefox()
# #    
browser1.get("http://www.baidu.com")
print(browser1.page_source)
#      
browser1.close()
원소 포 지 셔 닝
페이지 를 조작 하려 면 먼저 페이지 요 소 를 선택 하 십시오.
비교적 흔히 볼 수 있 는 8 가지 요소 포 지 셔 닝 방식 은 다음 과 같다.
원 소 를 찾 습 니 다.
다 중 요 소 를 찾 습 니 다.
포 지 셔 닝 방식 설명
find_element_by_id
find_elements_by_id
원소 id 로 포 지 셔 닝
find_element_by_name
find_elements_by_name
요소 이름 으로 위치 추적
find_element_by_xpath
find_elements_by_xpath
xpath 경 로 를 통 해 포 지 셔 닝
find_element_by_link_text
find_elements_by_link_text
전체 하이퍼링크 텍스트 로 포 지 셔 닝
find_element_by_partial_link_text
find_elements_by_partial_link_text
부분 하이퍼링크 텍스트 로 포 지 셔 닝
find_element_by_tag_name
find_elements_by_tag_name
태그 이름 으로 위치 추적
find_element_by_class_name
find_elements_by_class_name
클래스 이름 으로 포 지 셔 닝
find_element_by_css_selector
find_elements_by_css_selector
css 선택 기 를 통 해 포 지 셔 닝
더 상세 한 포 지 셔 닝 방식 은 참고 할 수 있다.
페이지 조작
1.폼 채 우기

#           
user = drive.find_element_by_name("LoginForm[username]")
user.send_keys(username)
#         
pwd=drive.find_element_by_id("LoginForm_password")
pwd.send_keys(password)
#           
drive.find_element_by_class_name("login_btn").click()
2.창 핸들
쉽게 말 하면 핸들 은 브 라 우 저 위 에 있 는 모든 창 표시 줄 의 유일한 표지 입 니 다.
在这里插入图片描述

#          
handles = drive.window_handles
#         2    
drive.switch_to.window(handles[2])
"""    """
#      
driver.close() 
#         1    
drive.switch_to.window(handles[0])
time.sleep(random.uniform(2,3))
3.url 불 러 오기 및 가 져 오기

#url  
drive.get(url)
#       url   
currentPageUrl = driver.current_url
4.쿠키 처리
  • get_쿠키:쿠키 정보 획득
  • add_쿠키:쿠키 정보 추가
  • 
    drive.get("http://www.baidu.com")
    cookie = {'name':'foo','value':'bar'}
    drive.add_cookie(cookie)
    drive.get_cookies()
    대기 모드
    현재 많은 사이트 에서 Ajax 기술 을 채택 하고 있다.
    웹 페이지 요소 가 언제 완전히 불 러 올 지 확인 할 수 없습니다.
    그래서 웹 요소 의 선택 이 어렵 습 니 다.
    이 때 는 대기 설정 이 필요 합 니 다(웹 페이지 로 딩 이 완료 되 기 를 기다 리 고 있 습 니 다)
    selenium 은 두 가지 대기 방식 이 있 습 니 다.
    현식 대기
    암시 적 기다 림
    1.명시 적 대기
    명시 적 기다 림 은 조건 부 트리거 기다 림 이다.
    설정 한 조건 이 이 루어 질 때 까지 계속 실 행 됩 니 다.
    시간 초과 설정 이 가능 합 니 다.시간 초과 요소 가 불 러 오지 않 으 면 이상 을 던 집 니 다.
    
    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    drive = webdriver.Chrome()
    url = 'http://www.baidu.com/'
    drive.get(url)
    
    try:
    	WebDriverWait(self.driver,10).until(EC.presence_of_element_located(By.ID,"LoginForm[username]")) #    
    except:
     print('%s       '% loc)
    이상 코드 로드'http://www.baidu.com/페이지
    "LoginForm[username]"요소 로 id 를 찾 습 니 다.
    시간 초과 10 초 설정,webDriverWait 기본 값 은 500 ms 입 니 다.요소 가 존재 하 는 지 확인 합 니 다.
    selenium 은 대기 시간 을 표시 하 는 데 내 장 된 방법 을 제공 합 니 다.
    에 자리잡다,...conditions 클래스 중 다음 표 참조
    내장 방법
    기능.
    title_is
    현재 페이지 의 title 이 예상 한 내용 과 같 는 지 판단 합 니 다.
    title_contains
    현재 페이지 의 title 에 예상 문자열 이 포함 되 어 있 는 지 판단 합 니 다.
    presence_of_element_located
    어떤 요소 가 dom 트 리 에 추가 되 었 는 지 판단 합 니 다.
    이 원소 가 반드시 보 이 는 것 은 아니다
    presence_of_all_element_located
    dom 트 리 에 최소 1 개의 요소 가 존재 하 는 지 판단 합 니 다.
    visibility_of_element_located
    어떤 요소 가 보 이 는 지 판단 합 니 다.
    visibility_of
    어떤 요소 가 보 이 는 지 판단 합 니 다.
    invisibility_of_element_located
    어떤 요소 가 dom 트 리 에 존재 하지 않 거나 보이 지 않 는 지 판단 합 니 다.
    text_to_be_present_in_element
    요소 에 있 는 text 가 예상 한 문자열 을 포함 하고 있 는 지 판단 합 니 다.
    text_to_be_present_in_element_value
    요소 의 value 속성 이 예상 문 자 를 포함 하고 있 는 지 판단 합 니 다.
    frame_to_be_available_and_switch_to_it
    이 frame 이 전환 할 수 있 는 지 여 부 를 판단 합 니 다.가능 하 다 면,
    True 로 돌아 가 고 전환 하지 않 으 면 false 로 돌아 갑 니 다.
    element_to_be_clickable
    어떤 요소 가 보이 고 enable 인지 판단 합 니 다.
    staleness_of
    dom 트 리 에서 어떤 요소 가 제거 되 기 를 기다 리 고 있 습 니 다.
    element_to_be_selected
    어떤 요소 가 선택 되 었 는 지 판단 합 니 다.드 롭 다운 목록 에 사 용 됩 니 다.
    element_located_to_be_selected
    어떤 요소 가 선택 되 었 는 지 판단 합 니 다.드 롭 다운 목록 에 사 용 됩 니 다.
    element_selection_state_to_be
    어떤 요소 의 선택 상태 가 예상 에 부합 되 는 지 판단 합 니 다.
    element_located_selection_state_to_be
    어떤 요소 의 선택 상태 가 예상 에 부합 되 는 지 판단 합 니 다.
    alert_is_present
    페이지 에 alert 상자 가 있 는 지 판단 합 니 다.
    2.암시 적 대기
    암시 적 기다 림 은 어떤 요 소 를 찾 으 려 고 시도 할 때 바로 발견 하지 못 하면 고정 시간 을 기다 리 는 것 이다.
    socket 시간 초과 와 유사 합 니 다.기본 설정 은 0 초 입 니 다.즉,최 장 대기 시간 에 해당 합 니 다.
    브 라 우 저 인터페이스 에서 직관 적 인 느낌 은:
    웹 페이지 로 딩 이 끝 날 때 까지 기 다 립 니 다.× 다음 으로 변 함)시 계속 실행,
    웹 페이지 로 딩 이 설정 대기 시간 을 초과 하여 오 류 를 보고 합 니 다.
    在这里插入图片描述
    사용 방법
    
    from selenium import webdriver
    drive = webdriver.Chrome()
    url = 'http://www.baidu.com/'
    #         10 
    drive.implicitly_wait(10)
    drive.get(url)
    user = drive.find_element_by_name("LoginForm[username]")
    3.스 레 드 휴면
    time.sleep(time)는 비교적 자주 사용 하 는 스 레 드 휴면 방식 이다.
    위험 을 피하 기 위해 서 나 는 개인 적 으로 무 작위 휴면 을 비교적 좋아한다.
    time.sleep(random.uniform(4,5))
    확장 프로그램 로드
    
    #        
    chrome_options.add_extension(extension_path)
    #      
    #download.default_directory:        profile.default_content_settings.popups:    0       
    prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory':tmp_path}
    chrome_options.add_experimental_option('prefs', prefs)
    python 파충류 의 selenium 시각 화 파충류 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 selenium 시각 화 파충류 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기