파이썬 파충류의 날 02

IMDB의 데이터베이스 정보를 크롤링 요청 요청
    - 요청 된 URL
        https://movie.douban.com/top250

    - 요청 방법
        GET

    - 요청 헤더
        사용자 에이전트
        쿠키

"" "" "" 
'' ' 
: IMDB 메시지 크롤링 
    영화 순위, 영화 이름, 영화 URL, 영화 감독의 
    영화 배우, 영화 년도, 장르 
    영화 음악, 영화 리뷰, 영화 소개 
    
(1) 모든 집으로 분석 URL 
먼저 A : 
https://movie.douban.com/top250?start=0&filter= 
두 번째 페이지 : 
https://movie.douban.com/top250?start=25&filter= 
세 번째 페이지 : 
HTTPS : //movie.douban ? .COM / TOP250 시작 = 50 & 필터 = 

'' ' 
가져 오기 요청
 가져 오기 를 다시
 #의 크롤러 부작 
# 1 요청 전송 
DEF get_page (URL) : 
    응답 = requests.get (URL)
     #의 인쇄 (응답.텍스트) 
    반환 응답 


# 2, 분석 데이터 
데프parse_index (HTML) :
     '' '' '' 
    '' ' 
    영화 순위, 영화의 URL, 영화 이름, 영화 감독, 영화 주연 
    영화 년 / 장르, 영화 음악, 영화 리뷰, 영화 소개 
    <DIV 클래스 = "항목"> . * <? EM 클래스 = ""> (. *?) </ EM>. *? <a href="(.*?)"> 
    . * <? 스팬 클래스 = "제목"> (. *?) 주연 </ SPAN> * 감독 :? (*.?) (.? *) (.? *) 한국어 </ ρ-> 
    * <.? 스팬 클래스 = "rating_num"*> (*.?. ?) </ SPAN>. * ? <SPAN> (. *?) 사람들이 </ SPAN> 댓글을 달았습니다 
    . *? <스팬 클래스 = "INQ"> (. *?) </ SPAN> 
    
    <DIV 클래스 = "항목" >. * <? EM 클래스 = ""> (. *?) </ EM>. *?의 <a href="(.*?)">. * <? 스팬 클래스 = "제목"> (. *? ) </ SPAN> * 감독 :? (*) 주연 :.?.? (*) 로 <br> (*) </ p>.?.* <? 스팬 클래스 = "rating_num". *?> (. *?) </ SPAN>. *? <SPAN> (. *?) 人 评价 </ SPAN>. *? <스팬 클래스 = "INQ"> (. *?) </ SPAN> 
    '' 
    movie_list = re.findall ( '<div 클래스 = "항목"> . * <? EM 클래스 = ""> (. *?) </ EM>. *? <a href="(.*?)">. * <? 스팬 클래스 = " 제목 "(*.?)> </ SPAN> * 주연 이사 :? (*.?)로 <br> </ p> * < .? 스팬 클래스 = (.? *) (.? *)"rating_num ". *?> (. * ?) </ SPAN>. *? <SPAN> (. *?) 사람 주석 </ SPAN>. *? < 스팬 클래스 ="INQ "> (. *?) </ 스팬 > ' , 
               HTML, 
               re.S는) 

    반환 movie_list 

# 3 데이터 저장 
DEF의 : save_data (동영상)
     #의 필름 주연, 영화, 영화 감독의 영화 순위, 영화의 URL, 이름을 
    #을 , 영화 년 / 장르, 영화 음악, 영화 리뷰 영화의 
    최고는 m_url, 이름, daoyan, 배우, year_type, \ 
    점은, 커밋DESC = 영화 
    year_type = year_type.strip ( " \ n을 ' ) 
    데이터F는 = '' ' 
                ========== ========= 환영 시계를 
                        순위 영화 : {최고} 
                        영화 URL : {m_url} 
                        영화 이름 : {이름} 
                        영화 감독을 : {daoyan} 
                        출연 영화 : {배우} 
                        년도 유형 : {year_type} 
                        영화 등급 : {점} 
                        영화 리뷰 : {커밋} 
                        영화 : {내림차순} 
                ======== ======= 다음에 요 제발 돌아와 = 
                \ N- 
                \ N- 
                '' ' 
    인쇄 (데이터) 

    열기 (와 ' douban_top250.txt ' , ' ', 인코딩 = ' UTF-8. ' ) F AS : 
        f.write (데이터) 

    인쇄 (F ' 영화 : {이름} 성공적으로 기록 ... ' ) 

경우  __name__ == ' __main__ ' :
     #은 모든 홈 접합 
    NUM = 0
     대한 라인  범위 (10 ) : 
        URL = F ' https://movie.douban.com/top250?start={num}&filter= ' 
        NUM + = 25
         인쇄 (URL) 

        # 1. 각 가정에 요청 전송 
        index_res을 = get_page (URL) 

        #2. 영화 정보에 대한 홈 페이지 구문 분석 
        movie_list = parse_index (index_res.text)를 

        위한 영화 movie_list :
             #의 인쇄 (동영상) 

            # 3. 저장 데이터 
            save_data (동영상)

두 셀레늄 요청 라이브러리
    1. 셀레늄은 무엇입니까?
        열기는 자동화 된 테스트 도구, 그것의 구동 원리이다
        일부 특정 좋은 작업을 수행 할 수있는 브라우저. 의 파충류 자연
        이 파충류를 위해 사용할 수 있도록 브라우저는 아날로그입니다.

    2. 왜 셀레늄을 사용합니까?
        장점 :
            - JS 코드 실행
            - 복잡한 통신 프로세스를 분석 할 필요없이
            브라우저에 할 팝, 풀다운 및 기타 작업 -
            - ***** 동적 데이터를 얻을
            - *** 균열이 인증 로그인

        단점 :
            - 낮은 효율

    3, 설치 및 사용
        셀레늄 요청 라이브러리를 설치 : 1.
            PIP3는 셀레늄 설치

        2. 당신은 브라우저를 설치해야합니다
            , "구글"또는 파이어 폭스

        3는 브라우저 드라이버 설치
            http://npm.taobao.org/mirrors/chromedriver/2.38/
            : 윈도우
                다운로드는 Win32 드라이브를

셀레늄의 기본 사용

 

에서 셀레늄 가져 오기 webdriver   #의 웹 드라이브 
에서 selenium.webdriver.common.by의 수입 으로   #은 어떤 방법으로, By.ID, By.CSS_SELECTOR 찾을 
에서 selenium.webdriver.common.keys 가져 오기#의 키보드 키 조작 
에서 selenium.webdriver.support 오기 EC의 AS expected_conditions   # 다음 WebDriverWait 함께, 그리고 
 selenium.webdriver.support.wait 오기 WebDriverWait의   # 개 페이지에 대한 대기는 특정 요소를로드 
오기 시간 

가져 시차 

#의 방법 : 오픈 브라우저가 구동 
중 #드라이버 = webdriver.Chrome (R '절대 경로 /webdriver.exe 드라이브') 

#의 방법 : 설치 디렉토리 webdriver.exe 파이썬 인터프리터로 운전 / 스크립트 폴더 
#의 파이썬 인터프리터 설치 디렉토리는 / 스크립트 환경 변수를 구성 
# 파이썬 인터프리터 설치 디렉토리 구성 환경 변수 
드라이버 = webdriver.Chrome () 

은 try : 

    driver.get ( ' https://www.jd.com/ ' ) 

    #은 명시 적으로 대기를 얻기 10 초 객체 
    #이 레이블을로드 기다릴 수 10초 
    대기 = WebDriverWait (드라이버, 10 ) 

    # 1 번호 키 요소 발견 
    INPUT_TAG = wait.until (EC.presence_of_element_located ( 
        (By.ID, ' ' ) 
    )) 

    time.sleep을 ( . 5) 
            
    # 입력 상자에 제품 이름을 입력 
    input_tag.send_keys ( ' 인형 ' ) 

    #을 눌러 키보드의 Enter 키를 
    input_tag.send_keys을 (Keys.ENTER) 


    time.sleep ( 20 ) 

최종적 :
     #은 브라우저 버전 운영 체제 자원 닫 
    드라이버를. close ()를

 

셀레늄 선택

 

'' '' '' 
에서 셀레늄 가져 오기 webdriver의   #의 웹 드라이브 
에서 selenium.webdriver.common.keys 가져 오기#의 키보드 동작 
가져 오기 시간 

가져 오기 시간 

드라이버 = webdriver.Chrome () 

은 try : 

    # 암시 대기 : 호출하기 전에 얻을 필요가있다 
    # 모든 요소를로드하는 데 10 초 정도 기다리 
    driver.implicitly_wait (10 ) 

    driver.get ( ' https://www.baidu.com/ ' ) 

    # 명시 적으로 대기 : 전화 후 GET 필요 
    (. 5를 time.sleep를 ) 

    '' ' 
    = 모든 방법 ============== =================== 
        요소 이 레이블을 찾을 수 있습니다 
        요소 것은 모든 레이블을 찾을 수 있습니다 
    '' ' 
    # 바이두 시작 자동 로그인 
    # 링크 된 텍스트를 통해 이동 find_element_by_link_text 1, #을 
    (= driver.find_element_by_link_text LOGIN_LINK ' 로그인 ' ) 
    login_link.click ()   #의 클릭 로그인 

    (time.sleep . 1 ) 

    # 2, #의 find_element_by_id ID는 통과 
    (USER_LOGIN = driver.find_element_by_id ' TANGRAM__PSP_10__footerULoginBtn ' ) 
    user_login.click () 

    time.sleep ( . 1 ) 

    # . 3, find_element_by_class_name 
    사용자 driver.find_element_by_class_name = (" 통과 텍스트 입력 사용자 명이 ' ) 
    user.send_keys ( ' ***** ' ) 

    # 4 find_element_by_name 
    PWD = driver.find_element_by_name ( ' 암호 ' ) 
    pwd.send_keys ( ' *****를 ' ) 

    에 제출 = driver.find_element_by_id ( ' TANGRAM__PSP_10__submit ' ) 
    submit.click () 
    #의 단부 

    # 5 find_element_by_partial_link_text 
    # 局部链接文本查找 
    LOGIN_LINK driver.find_element_by_partial_link_text = ( ' " ) 
    Login_link.click () 

    # . 6 find_element_by_css_selector의 
    #은 속성 선택기 엘리먼트 찾기 
    # :. 클래스 
    #의 # : ID의 
    login2_link = driver.find_element_by_css_selector ( ' .tang 패스 - footerBarULogin ' ) 
    login2_link.click () 

    # . 7 find_element_by_tag_name의 
    DIV driver.find_elements_by_tag_name = ( ' DIV ' )
     인쇄 (DIV) 


    time.sleep ( 20 ) 

이 finally :
     #은 브라우저 버전의 운영 시스템 자원 닫습니다 
    driver.close을 ()

 

추천

출처www.cnblogs.com/zyl0517/p/11122410.html