爬虫三部曲
1.送信要求
デフget_page(URL): respone = requests.get(URL) 戻り respone
2.データを解析
輸入再 デフ parse_index(HTML):
すべての一致を#findall
#Re.findall( "すべてに一致"、HTML、re.S)
(試合のフルテキスト用)#1 Re.S
detail_urls = re.findall(' <DIV CLASS = "アイテム"> <クラス= "imglink"のhref = "(。*?)" ' 、HTML、re.S) リターン detail_urls
#パースの詳細ページ
デフparse_detail(HTML): movie_url = re.findall(' < "?(*)"ソースSRC => ' 、HTML、re.S) の場合movie_url: リターン movie_url [0]
3.保存したデータ
輸入 UUID
タイムスタンプに基づいて生成された世界で唯一の文字列の一部について#Uuid.uuid4()
DEFのsave_video(コンテンツ): オープンで(F 'uuid.uuid4 {()} MP4 '、' WB ' )F AS: f.write(コンテンツ) を印刷(' ビデオをダウンロード... ')
#メイン+ Enterキー
テストケース:
if_name_ = ' _main_ ' のためのラインで範囲(5 ): URL = F ' http://www.xiaohuar.com/list-3-{line}.html '
#リクエストを送ります
応答= get_page(URL) #の印刷(レスポンス)
#応答ステータスコードを返します。
#の印刷(respone.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のための#パースの詳細ページ
move_url = parse_detail(detail_res.text)
#裁判官動画のURLは、印刷が存在します
もしmove_url: プリント(move_url)
映像送信要求動画のURLを取得する#バイナリストリーム
move_res = get_page(move_url)
#save_video機能へのバイナリビデオスプレッドは、ローカルに保存します
save_video(move_res.content)