Python 3 칠판 객 파충류 관문 돌파 답(1)

오늘 재 미 있 는 파충류 가 관문 을 뚫 고 방금 배 운 새로운 기술 을 연습 하 는 것 을 발견 했다.
제 가 사용 하 는 파 이 썬 버 전 은 3.5 입 니 다.
제1 관문
http://www.heibanke.com/lesson/crawler_ex 00/각 페이지 에 새로운 숫자 가 나타 납 니 다.이 시험 은 바로 웹 페이지 와 분석 내용 을 얻 는 것 입 니 다.매우 간단 합 니 다.
import requests
import re

#      
Q1_url = r'http://www.heibanke.com/lesson/crawler_ex00/'

url = Q1_url
num_re = re.compile(r'<h3>[^\d<]*?(\d+)[^\d<]*?</h3')
while True:
    print('       ', url)
    html = requests.get(url).text
    num = num_re.findall(html)
    if len(num) == 0:
        break
    else:
        url = Q1_url + num[0]
print('  !')

출력:
        http://www.heibanke.com/lesson/crawler_ex00/
        http://www.heibanke.com/lesson/crawler_ex00/19016
        http://www.heibanke.com/lesson/crawler_ex00/13579
        http://www.heibanke.com/lesson/crawler_ex00/43396
        http://www.heibanke.com/lesson/crawler_ex00/39642
        http://www.heibanke.com/lesson/crawler_ex00/96911
        http://www.heibanke.com/lesson/crawler_ex00/30965
        http://www.heibanke.com/lesson/crawler_ex00/67917
        http://www.heibanke.com/lesson/crawler_ex00/22213
        http://www.heibanke.com/lesson/crawler_ex00/72586
        http://www.heibanke.com/lesson/crawler_ex00/48151
        http://www.heibanke.com/lesson/crawler_ex00/53639
        http://www.heibanke.com/lesson/crawler_ex00/10963
        http://www.heibanke.com/lesson/crawler_ex00/65392
        http://www.heibanke.com/lesson/crawler_ex00/36133
        http://www.heibanke.com/lesson/crawler_ex00/72324
        http://www.heibanke.com/lesson/crawler_ex00/57633
        http://www.heibanke.com/lesson/crawler_ex00/91251
        http://www.heibanke.com/lesson/crawler_ex00/87016
        http://www.heibanke.com/lesson/crawler_ex00/77055
        http://www.heibanke.com/lesson/crawler_ex00/30366
        http://www.heibanke.com/lesson/crawler_ex00/83679
        http://www.heibanke.com/lesson/crawler_ex00/31388
        http://www.heibanke.com/lesson/crawler_ex00/99446
        http://www.heibanke.com/lesson/crawler_ex00/69428
        http://www.heibanke.com/lesson/crawler_ex00/34798
        http://www.heibanke.com/lesson/crawler_ex00/16780
        http://www.heibanke.com/lesson/crawler_ex00/36499
        http://www.heibanke.com/lesson/crawler_ex00/21070
        http://www.heibanke.com/lesson/crawler_ex00/96749
        http://www.heibanke.com/lesson/crawler_ex00/71822
        http://www.heibanke.com/lesson/crawler_ex00/48739
        http://www.heibanke.com/lesson/crawler_ex00/62816
        http://www.heibanke.com/lesson/crawler_ex00/80182
        http://www.heibanke.com/lesson/crawler_ex00/68171
        http://www.heibanke.com/lesson/crawler_ex00/45458
        http://www.heibanke.com/lesson/crawler_ex00/56056
        http://www.heibanke.com/lesson/crawler_ex00/87450
        http://www.heibanke.com/lesson/crawler_ex00/52695
        http://www.heibanke.com/lesson/crawler_ex00/36675
        http://www.heibanke.com/lesson/crawler_ex00/25997
        http://www.heibanke.com/lesson/crawler_ex00/73222
        http://www.heibanke.com/lesson/crawler_ex00/93891
        http://www.heibanke.com/lesson/crawler_ex00/29052
        http://www.heibanke.com/lesson/crawler_ex00/72996
        http://www.heibanke.com/lesson/crawler_ex00/73999
        http://www.heibanke.com/lesson/crawler_ex00/23814
        http://www.heibanke.com/lesson/crawler_ex00/98084
        http://www.heibanke.com/lesson/crawler_ex00/51103
        http://www.heibanke.com/lesson/crawler_ex00/39603
        http://www.heibanke.com/lesson/crawler_ex00/34316
  !

마지막 사이트 에 방문 하여 힌트:축하합니다.답 을 찾 았 습 니 다.파충류 여행 을 계속 하 세 요!
OK,다음 관문 으로 넘 어가 세 요.
제2 관문
http://www.heibanke.com/lesson/crawler_ex01/
출력:
import requests

#          
Q2_url = r'http://www.heibanke.com/lesson/crawler_ex01/'

username = 'king'
for x in range(1, 31):
    print('     : ', x)
    data = {
        'username':username,
        'password':x
    }
    html = requests.post(Q2_url, data = data).text
    if not '  ' in html:
        print('    ', x)
        break

로그 인 사이트 로 돌아 가 비밀 번 호 를 입력 하여 관문 을 통과 하 세 요!
제3 관문
http://www.heibanke.com/lesson/crawler_ex02/
이 관문 은 로그 인 이 필요 합 니 다.마음대로 계 정 을 등록 하고 파충류 에서 사용 해 야 합 니 다.또한 Post 에 csrfmiddlewaretoken 이 없어 서 는 안 됩 니 다.지난 관문 에는 이 항목 이 있 었 지만 추가 하지 않 아 도 된다.그러나 이 관문 에는 반드시 이 인 자 를 더 해 야 한다.
header 는 쿠키 를 추가 해 야 합 니 다.
상기 정 보 는 모든 단계 에서 얻 은 웹 페이지 소스 콘 솔 을 인쇄 한 다음 에 분석 한 것 이다.
     26

출력:
import requests

#        
Q3_url = r'http://www.heibanke.com/lesson/crawler_ex02/'

#      
login_url = r'http://www.heibanke.com/lesson/crawler_ex02/'

username =     
password =     

data = {
    'username':username,
    'password':password,
    'csrfmiddlewaretoken':'CAb4NKnA31NhzjgdPpBfbsIbKIJ1lG8V'
}

headers = {
    'Cookie':'sessionid=qx5zdoytvpf2qbtsz2i51hs69zakiu3h; csrftoken=CAb4NKnA31NhzjgdPpBfbsIbKIJ1lG8V'
}
s = requests.Session()
s.headers.update(headers)
html = s.post(login_url, data = data).text
# print(html)

for x in range(20, 31):
    data = {
        'username':username,
        'password':x,
        'csrfmiddlewaretoken':'CAb4NKnA31NhzjgdPpBfbsIbKIJ1lG8V'
    }
    print('     : ', x)
    html = s.post(login_url, data = data).text
    # print(html)
    if not '  ' in html:
        print('    ', x)
        break

수 동 비밀번호 로 통과!
제4 관문
이전 관문 이 끝 날 때'다음 관문'을 클릭 하고 세 번 째 관문 으로 돌아 가 려 면 수 동 으로 인터넷 주 소 를 바 꿔 야 합 니 다.http://www.heibanke.com/lesson/crawler_ex03/
이 관문 은 여전히 로그 인 이 필요 합 니 다.먼저 비밀 번 호 를 잘못 입력 하고 정확 한 비밀 번 호 를 특정한 사이트 에 알려 줍 니 다.http://www.heibanke.com/lesson/crawler_ex03/pw_list/
모두 13 페이지 로 페이지 마다 비밀 번 호 를 알려 주 었 다.모든 웹 페이지 는 불 러 오 는 속도 가 매우 느 리 고 무려 15 초 동안 설정 되 어 있 으 니 반드시 여러 스 레 드 에 제 사 를 지내 야 할 것 같 습 니 다.Lets's go!

좋은 웹페이지 즐겨찾기