Python爬蟲闖關-2

第二關

第二關網址: http://www.heibanke.com/lesson/crawler_ex01

第二關就是去登陸,用戶名是任意的,密碼是0到30中的一個數字,我們一個個試過去就行

步驟

  • 構造請求參數
  • 然後密碼從0到30去嘗試登陸

代碼

#!usr/bin/env python3
# -*- coding: utf-8 -*-

import requests
import re

#定義一個登陸類
class Login(object):
	
	def __init__(self):
		#設置會話對象,命名爲session,Session()的作用就相當於在同一個瀏覽器裏進行訪問
		#可以跨請求保持cookies,不需要再單獨爲每個請求設置cookie
		self.session = requests.Session()
		#設置請求頭
		self.headers = {
			'Host': 'www.heibanke.com',
			'User-Agent': 'Mozilla/5.0 (iPad; CPU OS 12_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) CriOS/68.0.3440.83 Mobile/16A5345f Safari/604.1',
			'Accept-Language': 'zh-cn',
			'Accept-Encoding': 'gzip, deflate',
			'Connection': 'keep-alive'
		}
		#設置get和post請求的url
		self.url = 'http://www.heibanke.com/lesson/crawler_ex01/'
		#設置post請求需要提交的數據,'username'和'password'兩個參數是必要的,'csf'爲空也可以登陸
		self.data = {
			'csrfmiddlewaretoken' : '',
			'username' : 'user',
			'password' : ''
		}
		
	#可以把get_cookies()方法去掉,因爲經過測試,即使post的時候,cfs爲空也可以進行登陸
	#這裏留着是強迫症
	#得到csf
	def get_cookies(self):
		response = self.session.get(url=self.url, headers=self.headers)
		print(response.cookies)
		#取出cookie,可以打印response.cooikes看看裏面是什麼內容
		self.data['csrfmiddlewaretoken'] = response.cookies['csrftoken']
		
	#進行post登陸
	def post_page(self): 
		response = self.session.post(url=self.url, headers=self.headers, data=self.data)
		#用re,把頁面的內容提取出來,方便我們在登陸過程中查看登陸的狀態
		text = re.findall('<h3>(.*?)</h3>', response.text, re.S)[0]
		print ('用戶名:', self.data['username'],'----密碼: ',self.data['password'],'---csf:',self.data['csrfmiddlewaretoken'],'提示信息:',text)
		return text
	def login(self):
		self.get_cookies()
		#從0到30,給'password'設值
		for x in range(31):
			self.data['password'] = str(x)
			text = self.post_page()
			#假如闖關成功,頁面就會有成功兩個字
			if '成功' in text:
				print('你成功的闖關了!密碼是:', x)
				break

if __name__ == "__main__":
	login = Login()
	login.login()

結語:

源碼: 點我

歡迎關注我的公衆號 瘋子的Python筆記

公衆號二維碼.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章