day02 - 셀레늄 라이브러리

어제 검토 :
첫째, 파충류의 기본 원칙
- 파충류는 전체 과정
1. 보내기 요청
(2)는 응답 데이터 수신
3. 구문 분석 및 추출 중요한 데이터
는 데이터 4. 저장
두, Resquests 라이브러리 요청
-get의
URL의
헤더
쿠키
자격증 신청인,
URL의
헤더
쿠키
데이터를
셋째, Xiaohua 순 크롤링
페이지에서 해결 추출물 세부 정보 페이지를
비디오 세부 사항 페이지를 통해 2. 추출 URL
(3)은 바이너리 스트림 로컬 비디오 서면 구해야
네 개의 자동 로그인 GitHub의
요청 헤더와 본문 정보 요청 1. 분석
사용자 이름을 -
- 비밀번호
번지 기능
- 분류 된
2.token
- 파싱 로그인 페이지 추출물에 의한
3. 요청 보낼 session_url
: -header
사용자 에이전트

과자 :
쿠키 로그인 페이지

- 데이터 :
폼 데이터
: 오늘의 내용
A, 크롤링하는 요청 IMDB 데이터베이스 요청 정보
요청 된 URL -
https://movie.douban.com을 / TOP250

- 요청 방법
GET

- 요청 헤더
사용자 에이전트
쿠키
두, 셀레늄 요청 라이브러리
셀레늄은 무엇 1.
최초의 자동화 된 테스트 도구에서 일부자가 정의 된 작업을 수행 할 수있는 브라우저의 구동 원리이다.
당신은 파충류을 그를 사용할 수 있도록 파충류는 기본적으로 아날로그 브라우저입니다.
2. 왜 셀레늄 사용
장점 :
- JS 코드 실행
- 복잡한 통신 프로세스를 분석 할 필요없이
, 팝을 풀다운 브라우저 및 다른 작업 -
- ***** 동적 데이터를 획득 할 수있다
- *** 크랙 인증 로그인 할
단점]
- 저효율
3. 설치 및 사용
셀레늄 요청 라이브러리를 설치 1.
PIP3는 셀레늄 설치
2. 당신은 브라우저 설치해야합니다 :
구글, 파이어 폭스
http://npm.taobao.org/mirrors/chromedriver/2.38/
3. 브라우저 드라이버 설치
# 크롤링 영화를
'' ' 
: 크롤링 IMDB 메시지
영화 이름, 영화의 URL
영화 감독, 영화 주연
영화 년도, 장르
영화 음악, 영화 리뷰
영화 소개
모든 홈 URL 1. 분석
첫 페이지를 :
https://movie.douban.com ? / top250 시작 = 0 필터 =
두 번째 페이지 :
https://movie.douban.com/top250?start=25&filter=
''
임포트 요청
오기 재
# 대형 부작
# 1 요청 전송
데프 get_page (URL)를 :
= 응답 (URL) requests.get
#Print (response.text를)
응답 반환

데이터 분석 # 2
DEF의 parse_index을 (HTML을) :
'' '
영화 순위, 영화의 URL, 영화의 이름, 영화 감독, 영화 배우,
영화 년 / 유형 , 영화 음악, 영화 리뷰, 영화 소개
<div 클래스 = "항목">. * <? EM 클래스 = ""> (. *?) </ EM>. *? <a href=".*?">. * <? 스팬 클래스 = "제목" (.? *)> </ SPAN>
*导演:.?主演(*.?)로 <br> * </ p> * <스팬 클래스 = "rating_num"* (*.?).?.?.? > (. *?) </ SPAN>. *? <SPAN> (. *?)人评价</ SPAN>
. *? <스팬 클래스 = "INQ"> (. *?) </ SPAN>
<div 클래스 = "항목">. * <? EM 클래스 = ""> (. *?) </ EM>. *? <a href=".*?">. * <? 스팬 클래스 = "제목"> (. ? *) </ SPAN> *导演:.? (*)主演:.?.?.?.? (*) 한국어 * </ p> * <. 스팬 클래스 = "rating_num"*?> (. *?) </ SPAN>. *? <SPAN> (. *?)人评价</ SPAN>. *? <스팬 클래스 = "INQ"> (. *?) </ SPAN>
''
movie_list = re.findall ( '<DIV 클래스 = "항목">. *? <엠 클래스 = ""> (. *?) </ EM>. *? <a href="(.*?)">. ? * <스팬 클래스 = "제목"> </ SPAN>导演* (*.?).?主演(*.?)로 <br> </ p> * (*.?) (*.?). <? 스팬 클래스 = "rating_num". *?> (. *?) </ SPAN>. *? <SPAN> (. *?)人评价</ SPAN>. *? <스팬 클래스 = "INQ"> ( . *?) </ SPAN> '
HTML,
re.S)
반환 movie_list의

# 3. 저장 데이터
DEF의 save_data (동영상) :
# 영화 순위, 영화의 URL, 영화, 영화 감독의 이름, 주연 영화
# 영화 년 / 영화 점수, 영화 리뷰, 영화 시놉시스의 유형
위, m_url, 이름, daoyan, 액터, year_type, 포인트, 커밋, DESC = 영화
데이터 = F '' '
볼 =========== ========== 환영
순위 영화 : { 상단}
동영상 URL : {m_url}
영화 이름 : {이름}
영화 감독을 : {daoyan}
영화 출연 : {배우}
년도 유형 : {year_type}
영화 등급 : {점}
영화 리뷰 : {} 커밋
영화를 {내림차순}
다음 번에 오신 것을 환영합니다 ========== =========
'' '
인쇄 (데이터)

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

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

된 IF __name__ == '__main__':
NUM = 0
라인 범위에 대한 (10) :
URL = F ' https://movie.douban.com/top250?start={num}&filter= '
NUM = + 25
인쇄 (URL)

#. 1. 각 가정은 요청이 전송
get_page = (URL)를 index_res

#에게 영화 정보 2. 분석 홈 페이지
= parse_index movie_list (index_res.text)

movie_list에서 영화에 대한 :
#Print (동영상)
# 3.데이터 유지
save_data (동영상)

#selenium 기본 라이브러리를 사용
에서 셀레늄 webdriver 가져 오기 
#으로 selenium.webdriver.common.by 가져 오기에서 어떤 방법으로, By.ID, By.CSS_SELECTOR 찾을
selenium.webdriver.common.keys 키 가져 오기 # 키보드 작업에서
selenium.webdriver.support 수입 expected_conditions에서 같은 다음 WebDriverWait 함께 EC 번호 및
selenium.webdriver.support.wait 수입 WebDriverWait 번호로부터 페이지로드 특정 요소 기다리는
오기 시차
# 방법 : 브라우저 개폐 구동함으로써
드라이버 = webdriver.Chrome (r'chromedriver.exe 경로 ')

# 방법 : 설치 디렉토리 webdriver.exe 파이썬 인터프리터로 운전은 / 스크립트 폴더
#python 통역 설치 디렉토리 / 스크립트 환경 변수 구성
환경 변수를 구성, 통역 설치 디렉토리 #python을
시도 :
driver.get을 ( 'https://www.jd.com/')

# 명시 적 대기를 얻기 10 초 개체를
10 초 라벨을로드 될 때까지 # 기다릴 수
대기 = WebDriverWait (드라이버, 10)

# 키는 요소 ID를 찾을 수
= INPUT_TAG (EC.presence_of_element_located (wait.until
(By.ID, '키')
))
. (5) time.sleep

#이 제품의 이름 입력 상자 입력
( '인형') input_tag.send_keys을

#의 Enter 키를 누르
INPUT_TAG을 .send_keys (Keys.ENTER)

time.sleep (20)
최종적 :
driver.close ()


# 셀렉터
시간 가져 
selenium.webdriver.common.by 바이 오기로부터
selenium.webdriver.common.keys 임포트 키와
selenium.webdriver.support.wait 오기 WebDriverWait에서
EC AS selenium.webdriver.support 임포트 expected_conditions에서
webdriver 셀레늄 오기로부터
드라이버 = webdriver. '크롬 (경로 r'chromedriver.exe)

다음 시도

: # 암시 대기 당신이 GET의 전에 호출 할 필요가
# 어떤 요소로드하는 데 10 초 정도 기다리
driver.implicitly_wait (10)

https://www.baidu driver.get를 ('. COM / ')

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

' ''
=============== 모든 방법 ========== =========
요소는 레이블 찾을 수 있습니다
요소는 모든 레이블 찾을 수 있습니다
'' '
#의 바이 시작 자동 로그인을
# 1, # find_element_by_link_text通过链接文本去找
LOGIN_LINK driver.find_element_by_link_text = ( '登录')
login_link.click () #点击登录

time.sleep (1)

# 2, # find_element_by_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')를
제출합니다.()을 클릭
# 끝

. 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의
#은 선택기 속성을 기반으로 요소를 찾을 수
# :. 클래스
아이디 : # 번호
'(login2_link = driver.find_element_by_css_selector 패스 - footerBarULogin-.tang ')
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/2328322824chx/p/11121314.html