学ぶ教科書「Pythonのネットワーク・データの収集」、この本のためのコードのほとんど。
ほとんどは「実行結果」ページ構成(フォーム属性actionの値)の処理された形の後、ジャンプボタンを提出し、いくつかのHTMLのWebフォームフィールドで構成されています。これらのフィールドは、通常のHTMLテキストで構成されていますが、だけでなく、アップロードやその他の非テキストコンテンツを提出することができます。これらは、その前にデータを妨げるフェッチされています。騒ぎ出て開きます。
1.HTTP Basic認証
クッキーの本発明の前に、ウェブサイトのログインプロセス最も一般的に使用される方法は、HTTP Basic認証(HTTP basicaccess認証)を使用することです
インポート要求 から requests.auth 輸入AuthBase から requests.auth 輸入HTTPBasicAuth
AUTH = HTTPBasicAuth(' ライアン'、' パスワード' ) 、R = requests.post(URL = " http://pythonscraping.com/pages/auth/login.php "、AUTH = AUTH) プリント(r.text)
それは、通常のPOSTリクエストのように見えますが、パラメータとしてHTTPBasicAuth払いへの要求オブジェクトがありますが。結果は、(検証が失敗した場合は、ページへのアクセスを拒否された)ユーザー名とパスワードの認証成功のページに表示されます。
2.一般的なフォーム処理
フォーム出典:
< フォームのメソッド= "ポスト" アクション= "processing.php" > 最初の名前:< 入力タイプ= "テキスト" 名前= "FIRSTNAME" > < BR > 姓:< 入力タイプ= "テキスト" 名前= "姓" > < BR > < 入力タイプ= "提出" 値= "送信" > </ フォーム>
注意:最初に、二つの入力フィールドの名前は、姓と名で、それは非常に重要です。フォームは、サーバー上の変数名に転送されることが確認された後、フィールドの名前を決定します。あなたがフォームの送信データの動作をシミュレートしたい場合は、フィールド名を使用して変数名が一から一であることを確認する必要があります。第二に、実際には(絶対パスがhttp://pythonscraping.com/files/processing.phpである)、実際のprocessing.phpに起こる行動の形に注意を払います。実際に、このページで発生する任意のPOSTリクエストフォームは、ページ自体が配置されているフォームではありません。
Pythonの文:
インポート要求 のparams = { ' FIRSTNAME ':' ライアン'、' LASTNAME ':' ミッチェル' } R = requests.post(" http://pythonscraping.com/files/processing.php "、データ= paramsは) プリント(R 。テキスト)
3.もう少しコードを参照してください。
あなたは、限り、あなたはその情報を知っておく必要があるとすることができます(文EDITORIAL)、各コードの意味を理解する必要はありません。
HTML:
< フォームアクション= "http://post.oreilly.com/client/o/oreilly/forms/quicksignup.cgi" ID = "example_form2" 方法= "POST" > < 入力名= "client_token" タイプ= "隠れました" 値= "oreilly" /> < 入力名= "購読" タイプ= "隠された" 値= "のoptinを" /> < 入力名= "success_url" タイプ= "隠された" 値を= "http://oreilly.com/store /ニュースレター、ありがとう。HTML」 /> < 入力名= "error_url" タイプ= "隠れた" 値= "http://oreilly.com/store/newsletter-signup-error.html" /> < 入力名= "topic_or_dod" タイプ= "隠れた" 値= "1" / > < 入力名= "ソース" タイプ= "隠れた" 値= "ORM-家庭-T1-dotd" /> < フィールドセット> < 入力クラス= "EMAIL_ADDRESS長い" MAXLENGTH = "200" 名前= "EMAIL_ADDR"サイズ= "25" タイプ= "text"の 値
= "ここにあなたのメールアドレスを入力して" /> < ボタンALT = "参加" クラス= "スキニー" 名前= "送信" onclickの= "addClickTracking( 'ORM'、 '電子ブック'、 'rightrail'、 'DOD')を返します。
" 値は= "提出" >参加</ ボタン> </ fieldsetの> </ フォーム>
:あなたは2つだけに焦点を当てる必要がありますこれらを初めて目には恐怖を感じるだろうが、ほとんどの場合、(後で私たちは、例外を紹介します)が、
あなたは(この場合はEMAIL_ADDRに)データフィールドの名前を提出したい•
•アクションのフォームフォーム送信サイトは(http://post.oreilly.com/client/o/oreilly/forms/quicksignup.cgiこの場合)が表示された後にページであるプロパティは、対応する情報要求情報に加え、コードを実行します。
インポート要求
のparams = { ' EMAIL_ADDR ':' [email protected] ' } R = requests.post(" http://post.oreilly.com/client/o/oreilly/forms/ quicksignup.cgi " 、データ= paramsは) 印刷(r.text)
文書や画像の4提出
HTML:
< H2 >ファイルをアップロードします!</ H2 > < フォームアクション= "../ページ/ファイル/ processing2.php" メソッド= "ポスト" のenctype = "マルチパート/フォームのデータ" > JPG、PNG、またはGIFを提出してください:< 入力タイプ= "ファイル" 名前=" uploadFile」> < BR > < 入力タイプは、= "提出" 値= ""ファイルのアップロード> </ フォーム>
パイソン:
インポート要求 ファイル = { ' uploadFile ':オープン(' ../files/Python-logo.png '、' RB ' )} R = requests.post(" http://pythonscraping.com/pages/processing2.php " 、 ファイル = ファイル) プリント(r.text)