最初のリクエストのライブラリのクイックインストールPIP3が要求をインストール要求
インポートパッケージ:
インポート要求が インポート時に
爬虫三部曲:
図1に示すように、送信要求
デフget_page(URL): 応答 = requests.get(URL) の戻り応答
2、分析データ
インポートの再 DEFのparse_index(HTML): #は、すべての一致のfindAll #re.findall( '通常のマッチングルール'、 '一致するテキスト'、 'マッチングモード') #1 re.Sを:すべてのテキストのマッチングを検索 detail_urls = re.findall(' のdivクラス= "アイテム"> <クラス= "imglink"のhref = "(。*?)" ' 、HTML、re.S) リターンはdetail_urls #の解決の詳細ページの DEFの:parse_detail(HTML) movie_url = re.findallを(' <ソースSRC = "(。*?)" ' 、HTML、re.S) IF movie_url: リターン movie_url [0]
3、データを保存します
インポート UUID #1 uuid.uuid4()タイムスタンプの期間のみ、テキスト列を生成 DEFのsave_video(コンテンツ): オープンと(F ' uuid.uuid4 {()} MP4。'、' WB ' F AS): F.書き込み(コンテンツ)
実際のケース:クロールに学校の美しさのネットワーク
#メインはENTER + IF __name__ == ' __main__ ' : のためのラインで(6レンジ): URL = F ' http://www.xiaohuar.com/list-3-{line}.html ' #の送信要求 応答= get_page(URL) #の印刷(レスポンス) #の#は、応答ステータスコードを返す #1 (response.status_code)印刷を #の#は、応答テキストを返す #印刷(response.text) #の解析ホームページ detail_urls = parse_index(response.text) #の詳細をループをページのURL についてdetail_url でdetail_urls: #の印刷(detail_url) #送信要求の前に、各ページに detail_res = get_page(detail_url) #の印刷(response.text) #解決の詳細ページ動画のURLについて movie_url = parse_detail(detail_res.text) #印刷されたURLの存在を決定ビデオ IF movie_url: プリント(movie_url) #映像送信要求URLビデオストリームバイナリ取得する movie_res = get_page(movie_url) #ローカルsave_videoを保存する機能にバイナリストリームビデオ save_video(movie_res.content)を
二、自動的にGitHubのをログに記録するPOSTリクエスト
1.トークン文字列を取得します。
' ''
1.訪問トークン文字列の取得するために、ログインページ
要求のURL:
https://github.com/login
リクエストメソッド:
GET
リクエストヘッダを:
クッキー
のUser-Agent:Mozillaを/ 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36(ヤモリのようにKHTML、)クローム/ 75.0.3770.100サファリ/ 537.36
2.解析およびトークン文字列の抽出
定期的に#を
<タイプ= "隠された"名前のINPUT =値"をauthenticity_token" = "(。*?)" />
'' '
インポート要求が インポート再 LOGIN_URL = ' https://github.com/login ' #のログイン页面请求头信息 login_headers = { ' のUser-Agent ':" ;のAppleWebKit / 537.36(KHTML、同様のMozilla / 5.0(WOW64のWindows NT 10.0)ヤモリ)クローム/ 75.0.3770.100サファリ/ 537.36 ' } login_res = requests.get(URL = LOGIN_URL、ヘッダー= login_headers) #1 プリント(longin_res.text) #解析提取トークン字符串 authenticity_token = re.findall( ' の<input type = "隠し"名= "authenticity_token"値= "(。*?)"/> "
、 login_res.text、 re.S )[0] プリント(authenticity_token)
#获取ログイン页面的クッキー信息 #1 プリント(型(login_res.cookies))# のプリント(型(login_res.cookies.get_dict())) login_cookies = login_res .cookies.get_dict()
2 GitHubの登録開始
'' '
:POSTリクエスト自動ログインhithub
要求URL:
https://github.com/session/
リクエストメソッド:
POSTの
リクエストヘッダ:
クッキー
User--エージェント:;のAppleWebKitのMozilla / 5.0(WOW64のWindows NT 10.0) /537.36クロム(ヤモリ様KHTML) / 75.0.3770.100サファリ/ 537.36
请求体:
コミット:ログイン
UTF8:✓
authenticity_token:28M + Bm0xt10QgEidyrICyo / 53xxYWV0deet0sGQKPdoQG9FXPOqFHZjMQPHHc + RBlOfJTMplbpyJI7yoBZH0zw ==
ログイン:*****
パスワード:********
webauthn-サポート:サポートされていません
''」
#セッションログインURL session_url = ' https://github.com/session/ ' #のリクエストヘッダ session_headers = { ' User--エージェント':' のMozilla / 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36(KHTML、ヤモリ様)クローム/ 75.0.3770.100サファリ/ 537.36 ' } #1 要求情報が form_data = { " コミット":" サインイン" 、 " UTF8 ":" ✓ " 、 " authenticity_token ":authenticity_token、 " ログイン":" [email protected] "、#能成功登录的账号密码 " パスワード":" SHAOhh170326 " 、 " webauthn-サポート":" サポート" } session_res = requests.post(URL = session_url、ヘッダー= session_headers、クッキー=のlogin_cookies、データ= form_data) オープン(と' github.html '、' W '、エンコード= ' UTF-8 ')Fのように: f.write(session_res.text)
github.htmlでファイルがgithubのを記録することができ、アカウントのパスワードを失うことはありません開いているブラウザで見ることができ、生成
QQのブラウザを使用しようとしているの初めに、そして最終的にアカウントのパスワードがバックGoogleのブラウザに、間違っている、とのデータ変更後のUser-Agentなどが正常に動作してログインすることができます表示されます