Day01は、ビデオ+ POSTリクエスト自動ログインGitHubのクロール

最初のリクエストのライブラリのクイックインストール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などが正常に動作してログインすることができます表示されます

おすすめ

転載: www.cnblogs.com/tanknb/p/11115839.html