데이터베이스를 업로드 한 후 셀레늄 파충류.

첫째, 준비 작업

1.1 소프트웨어 설치

지정된 위치에 chromedriver.exe합니다 구글 브라우저를 설치, 파이썬을 설치합니다.
스크립트 폴더에. 경로의 내 측면은 다음과 같습니다 C : \ 사용자 \ 1 \ 의 AppData \ 로컬 \ 프로그램 \ 파이썬 \ Python37 \ 스크립트

 

 

 

1.2 사용 Python 라이브러리.

파이썬 라이브러리가 사용됩니다 시간, datetiem, 운영 체제, 셀레늄, 팬더, pymysql, 로깅, 트위스트

처리 용 pymysql. 자신의 패키지를 형성한다.

# 인코딩 :. UTF 8 
가져 오기 pymysql.cursors의 




클래스 mysqloperation (객체) :
     DEF  __init__ (자체, 설정) : 
        self.connection = pymysql.connect (= 호스트 설정 [ ' MYSQL_HOST ' , 
                                          포트 = 설정 [ ' MYSQL_PORT ' ] 
                                          사용자 = 설정 [ ' mysql_user가 ' ]
                                           # 직접 연결 pymysql가있다 passwd에 연결 풀 암호 접속된다 
                                          Passwd 파일 구성 = [ 'mysql_passwd ' , 
                                          DB = 설정 [ ' mysql_db ' , 
                                          캐릭터 = ' UTF8 ' , 
                                          cursorclass = pymysql.cursors.DictCursor 
                                          ) 

    DEF read_sql (자기, SQL) 
        : 커서 등 self.connection.cursor ()를 
            사용해 : 
                커서. 실행 (SQL) 
                결과 = cursor.fetchall ()
                 리턴 결과
            제외시켰다 전자로 예외 : 
                self.connection.rollback ()   # 回滚
                인쇄 ( ' 事务失败' , E) 

    데프 insert_sql (자기, SQL) 
        : 커서로 self.connection.cursor ()를 
            시도 : 
                cursor.execute을 (SQL ) 
                self.connection.commit () 
            를 제외하고 전자와 같은 예외 : 
                self.connection.rollback () 
                인쇄 ( ' 事务失败' , E) 

    데프 update_sql (자기, SQL) :
         # sql_update = "업데이트 사용자가 설정 한 사용자 이름 = '% s'을 (를) ID = % d의 "

        : 커서 AS와 self.connection.cursor () 
            은 try : 
                cursor.execute (SQL)   # SQL 문을 같은 매개 변수를 전달하는 
                #이 제출 
                self.connection.commit ()를
             제외하고는 예외로 E :
                 # 오류 롤백 
                self.connection.rollback () 

    DEF의 delect_sql (자체, SQL_DELETE) : 
        self.connection.cursor (와) 커서로 : 
            은 try : 
                cursor.execute (SQL_DELETE)   # SQL 문을 같은 매개 변수를 전달하는 
                #이 제출 
                ) (self.connection.commit를
             제외하고는 : E와 같은 예외
                 #을错误回滚
                self.connection.rollback () 

    데프 read_one (자기, SQL) 
        : 커서로 self.connection.cursor ()를 
            시도 : 
                cursor.execute (SQL) 
                결과 = cursor.fetchone ()
                 반환 결과
             를 제외하고 전자 등의 예외 : 
                self.connection.rollback ()   # 回滚
                인쇄 ( ' 事务失败' , E) 

    데프 다시 연결 (자동) :
         시도 : 
            self.connection.ping () 
        제외 : 
            self.connection ()

 

 

 

둘째, 코드를 작성

2.1 공통 코드

에서 셀레늄 수입 webdriver
 에서 selenium.webdriver.chrome.options 가져 옵션
 에서 selenium.webdriver.common.by의 수입 에 의해
 에서 selenium.webdriver.support의 수입 EC로 expected_conditions
 에서 selenium.webdriver.support.wait 수입 WebDriverWait
 에서 selenium.webdriver.common .keys는 가져올 수입 수입 날짜
 수입 OS의
 수입 PD로 팬더
 에서 SQLCONNECT의 수입MysqlOperation
 수입 수학 


# 配置浏览器 
옵션 = 옵션 () 
download_path = R " E : \ splider \ PK " 
options.add_experimental_option ( " 의 환경 설정 " , {
     " download.default_directory " : download_path,
     " download.prompt_for_download " : 거짓,
     " 다운로드 .directory_upgrade " : 사실은,
     " safebrowsing.enabled " : 참 
}) 

# 配置数据库 
설정 = { 'mysql_host ': ' ,
           ' MYSQL_PORT ' :
           ' mysql_user ' : ' ,
           ' mysql_passwd ' : ' ,
           ' mysql_db를 ' : ' 
          } 

의 MySQL = MysqlOperation (= 설정 구성) 



# 防错清空 
file_list를 = os.listdir (download_path)
 대한 파일 file_list를 : 
    FILE_PATH = download_path + ' \\ '+ 파일
     의 경우os.path.exists (FILE_PATH) : 
        os.remove (FILE_PATH) 
인쇄 ( ' #Cleared ' ) 

#이 백분율은 소수점으로 변환 된 
DEF judge_percent (X) :
     IF isinstance (X, STR) :
         IF  ' % '  에서 : X
             반환 라운드 (플로트 (X [-. 1]) / 100, 2 )
         다른 :
             리턴 X
     다른 :
         리턴 X 

DEF 바꾸기 (download_path, START_TIME, END_TIME, 지방 = ' all_country ' ) :
     # 다운로드 파일 이름 바꾸기
    번호 = 0 
    original_file_path = ' OLD_NAME ' 
    rename_file_path = ' NEW_NAME ' 
    동안  되지 os.path.exists (original_file_path)  수 <5 : 
        time.sleep ( 10 )  = 번호 + 1 
    os.rename (original_file_path, rename_file_path) 
    인쇄 ( " 完成重命名" )

 

설명 :

구성 브라우저의 목적은 다운로드 경로를 변경하는 것입니다 download_path 사용자 정의 다운로드 경로입니다.

구성 데이터베이스는 데이터베이스에 연결하는 것입니다.

목적은 폴더 내부의 잘못 두려움 데이터가 다운로드 된 데이터를 방해 취소하는 것입니다. 이것은 내가 비워 모든, 당신은 비워 파일을 지정할 수 있습니다.

영어로 한자에 파일 이름 바꾸기를 다운로드 한 후.

 

2.2 셀레늄 시뮬레이션 다운로드합니다.

나는 위치가 XPATH이다 사용합니다.

= 브로 webdriver.Chrome (= 옵션 옵션) 
bro.implicitly_wait ( 10)    # 암시 대기 10S 
time.sleep (10)             #의 대기 10S

때때로 때문에 XPATH 부하 느린 속도와 다른 이유,의. 이 시간 그래서 우리는 기다릴 필요가있다.

 

 

bro.find_element_by_xpath = A ( '' ) 
a.click () 
a.clear () 
a.send_keys ( " 입력 " ) 
a.send_keys (Keys.ENTER)   # 시뮬레이션은 엔터 키를 눌러

 파충류는 때때로 텍스트를 입력해야 할 때. 그러나 그들이 입력을 클릭하거나 Enter 키를 눌러해야 할 단어를 입력합니다.

이것은 아날로그 조작 셀레늄를 입력해야합니다.

 

2.2 배 명명

다운로드가 같은 이름으로 수행 한 후.

2.3 조작 데이터베이스.

데이터를 다운로드 한 후. 데이터베이스에 데이터를 업로드해야합니다.

업로드하기 전에 제거해야합니다. 예를 들어, 다운로드 된 데이터는 데이터 번호 1-5입니다. 필요가 데이터베이스 1-5 삭제, 업로드의 데이터를 넣어 없습니다.

적은 시간이 데이터를 업로드하면 업로드 할 수 있습니다.

대량의 데이터를 업로드 배치 될 경우.

 

 

 

 

 

 

 

 

 

추천

출처www.cnblogs.com/qianslup/p/11805514.html