Python爬虫類突破(第2関門)
2437 ワード
前回第1関所爬虫類の突破に成功した後、私たちは第2関所の住所を得ることができます.http://www.heibanke.com/lesson/crawler_ex01/.
ぶんせき
図のようにページを開きます.
数字を当てる
ヒントに基づいて、ニックネームと30以内の数字を勝手に入力し、提出後、パスワードエラーを提示します.
パスワードエラー
テーマの意図が明らかになったのは、数字を当てることだ.
次に、バックグラウンドに転送されたデータが何であるかを分析します.
私たちは数字を提出した後、私のバックグラウンドに送信された要求データを見ることができます.
要求データ
リクエストデータにはusernameとpassword、およびcsrfmiddlewaretoken(このデータの本関では使用されていません)が含まれており、コード実装できます.
すなわち,コードにより0~30間のデータをバックグラウンドに転送し続け,テキストに
requests実装
実行結果
seleniumによる実装
環境:Firefox 58,Chrome 64.
Firefoxを使用して
ChromeブラウザはChromeDriver-WebDriver for Chromeをインストールする必要があります.ダウンロードして解凍した後、環境変数に設定します.
実行結果:
実行結果
成功ページ:
成功ページ
まとめ
本関は主にPOST法でデータを提出する関連操作を考察し,比較的簡単である.同様に、成功したら次の関門の住所に戻りますので、まず次の関門を試してみてください.
役に立つと思ったら、私の微信に注目して、一緒に勉強して、一緒に進歩して、不定期に本を贈る活動を出してください.
あなたの関心は私に最大の励ましです!
ぶんせき
図のようにページを開きます.
数字を当てる
ヒントに基づいて、ニックネームと30以内の数字を勝手に入力し、提出後、パスワードエラーを提示します.
パスワードエラー
テーマの意図が明らかになったのは、数字を当てることだ.
次に、バックグラウンドに転送されたデータが何であるかを分析します.
F12
を押します.私たちは数字を提出した後、私のバックグラウンドに送信された要求データを見ることができます.
要求データ
リクエストデータにはusernameとpassword、およびcsrfmiddlewaretoken(このデータの本関では使用されていません)が含まれており、コード実装できます.
すなわち,コードにより0~30間のデータをバックグラウンドに転送し続け,テキストに
の文字が含まれていれば成功しなかったことを示す.論理は比較的簡単で、ここは直接コードをつけました~requests実装
# coding=utf-8
import requests
url = 'http://www.heibanke.com/lesson/crawler_ex01/'
playload = {'username': 'liuhaha', 'password': '1'}
for i in range(31):
playload['password'] = i
print(u' :' + str(playload))
r = requests.post(url, data=playload)
if u" " in r.text:
print(u' !')
break
実行結果
seleniumによる実装
環境:Firefox 58,Chrome 64.
Firefoxを使用して
WebElement
のsubmit()
メソッドを呼び出したところ、submit()
メソッドがページの再ロードが完了するまで戻ってこないことがわかり、ページ要素を検索するときに目的のものを見つけることができませんでした.
ボタンを呼び出すclick()
の方法はすべて正常です.ChromeブラウザはChromeDriver-WebDriver for Chromeをインストールする必要があります.ダウンロードして解凍した後、環境変数に設定します.
# coding=utf-8
from selenium import webdriver
url = 'http://www.heibanke.com/lesson/crawler_ex01/'
# browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser.get(url)
for i in range(31):
username = browser.find_element_by_name('username')
username.clear()
username.send_keys('liuhaha')
password = browser.find_element_by_id("id_password")
password.clear()
password.send_keys(i)
# FireFox ,Chrome ,submit
# password.submit()
# click()
browser.find_element_by_id('id_submit').click()
returnText = browser.find_element_by_tag_name('h3')
print(returnText.text + ', password ' + str(i))
if u" " in returnText.text:
break
browser.back()
browser.quit()
実行結果:
実行結果
成功ページ:
成功ページ
まとめ
本関は主にPOST法でデータを提出する関連操作を考察し,比較的簡単である.同様に、成功したら次の関門の住所に戻りますので、まず次の関門を試してみてください.
役に立つと思ったら、私の微信に注目して、一緒に勉強して、一緒に進歩して、不定期に本を贈る活動を出してください.
あなたの関心は私に最大の励ましです!