Python爬蟲闖關 5

2021-08-26 15:26:13 字數 2298 閱讀 5481

第五關**:

第四關的密碼與第三關一樣,都是30以內的數字

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import requests

from lxml import etree

class login(object):

def __init__(self):

self.session = requests.session()

self.url_login = ''

self.url_test = ''

self.headers =

self.data_login =

self.data_test =

# 獲取cookies

def get_cookies(self):

res = self.session.get(url=self.url_login, headers=self.headers)

self.data_login['csrfmiddlewaretoken'] = res.cookies['csrftoken']

# 進行賬號登陸

def login(self):

req= self.session.post(url=self.url_login, data=self.data_login, headers=self.headers)

html = etree.html(req.text)

#用xpath取得登陸後的關鍵字

result = html.xpath('//body/div//h5/text()')

#如果登陸成功就會提示'歡迎***訪問我們站點'

if result:

print(result[0])

self.data_test['csrfmiddlewaretoken'] = req.cookies['csrftoken']

else:

print('登陸失敗')

# 取得驗證碼

def get_captchat(self):

res = self.session.get(url=self.url_test, headers=self.headers)

self.data_test['csrfmiddlewaretoken'] = res.cookies['csrftoken']

html = etree.html(res.text)

uuid = html.xpath('//img/@src')[0].split('/')[3]

self.data_test['captcha_0'] = uuid

url_captcha = '' + uuid

# 儲存到本地

res = self.session.get(url=url_captcha, headers=self.headers)

with open('1.png', 'wb') as pic:

pic.write(res.content)

self.data_test['captcha_1'] = input('請輸入驗證碼:')

# 模擬登陸

def post_page(self):

self.get_captchat()

res = self.session.post(url=self.url_test, data=self.data_test, headers=self.headers)

html = etree.html(res.text)

content = html.xpath('//h3/text()')[0]

return content

def main(self):

self.get_cookies()

self.login()

for x in range(0,31):

self.data_test['password'] = str(x)

content = self.post_page()

if '成功闖關' in content:

print('密碼:%s 正確' %x)

print(content)

break

else:

print('密碼:%s 錯誤' %x)

if __name__ == "__main__":

login = login()

login.main()

原始碼: 點我

python闖關 Python 爬蟲闖關(第一關)

經過多次手動填數字後,我們得到了這個頁面 有一 dabo 數字,顯然手動在這輸是不太靠譜了。不過,我們可以大致總結出本關的規律 第一關是將頁面出現的數字填寫到當前 url的尾部進行訪問,然後會得到乙個新的數字,再用它替換 url中的尾部數字,這樣不斷迴圈往復,直到頁面出現成功標識。那麼思路也有了 解...

python闖關 python闖關 Day05

乙個簡單的 選單 usr bin env python coding utf 8 mymenu 動物 貓 黃貓 花貓 狗 二哈 金毛 植物 樹 大樹 小樹 草 綠草 矮草 menu list list mymenu.keys while true print 編號 center 50,for i i...

python闖關 python闖關 Day02

q1 寫乙個使用者迴圈猜年齡的遊戲,猜對就退出,猜不對就繼續猜,猜三次,提示使用者是否繼續,使用者回答y或者y就繼續猜,三次之後再重複,回答n或n就結束遊戲。usr bin env python coding utf 8 猜年齡 import random age random.randint 1,...