最初の文:この小さなビデオでもその小さなビデオ、あなたが暗黙できます
目標:このサイトのhttps://www.vmovier.com/名前は、ライブラリのフィールドを尋ねるようなものです
「」 " まずhttps://www.vmovier.com/は、要求を送信し 、応答解析し、応答を取得する すべてのタイトルとリンクから除外されます ビデオをダウンロードするには、要求を送信するためのリンクをフィルタリングするために コンテンツを保存し、応答を取得し、SRC属性要求を送信しますローカル 注:これは動的ページであるJSデータ・キャプチャ・インタフェースが必要とされる パケットキャプチャツールフィドラー用の使用 インタフェース情報:HTTPS :? //www.vmovier.com/post/getbytabタブ=新規 &ページ= 1&pagepart = 2&タイプ= 0&コントローラ=指数&last_postid 58197 = 「」 " インポート要求 から BS4 インポート BeautifulSoup インポート時間 インポートJSON から lxmlのインポートetree インポート再 から セレンをインポートwebdriverを から selenium.webdriver.chrome.optionsインポートオプションは、 #インターフェイスモードを制御するために、パラメータオブジェクトを作成しますが、非クロームになって chrome_options = オプション() #オープン無限モード chrome_options.add_argument(「--headless 」) #無効GPUの chrome_options.add_argument(" --disable-GPU ' ) #のドライブパス 経路R&LT = " D:\ chromedriver \ chromedriver.exe ' #のヘッダは、グローバルとして追加される ヘッダー= { ' User--エージェント':' のMozilla / 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36(KHTML、クローム/ 65.0.3325.181サファリ/ 537.36)などのGeckoの" } #ジャンプ、我々のようなジャンプ機構感じる抗登るが再びフィルタリングURLがジャンプの後に処理する機能をろがあり DEF FanPa(R&LT): #定期的に取得src属性 match_obj =再。コンパイル(R&LT ' <プロパティのメタ= "この記事だった記事:published_first"。コンテンツ= "新しいフィルム分野、(*)" /> ' ) URL = re.findall(match_obj、r.text) #の印刷(URL) #の出口() の戻りURL #のパース家は、タイトルリンク全て返し DEFの:handle_title() #は、入力したページのご希望の数をクロール ページ= INT(入力(「:あなたがクロールするページの番号を入力してください」)) 印刷(" 開始.....ページ%sのクロール"%ページ) #インタフェースにデータを送信するために動的ページのキャプチャインターフェイスであるため、引き継ぐためにキャプチャインターフェイス #ページ=ページpagepart =何回各ページのリフレッシュページ・リフレッシュ三回、それぞれ123はループ書くことができる ために Tを中範囲(1,4 ): URL = " https://www.vmovier.com/post/getbytab?tab=new&page=%&pagepart =%D S "%(ページ、T) #の印刷(URL) #の終了() requests.get = R&LT(URL = URL、ヘッダー= ヘッダ) #は、コンテンツを解析し、データが返されるため、直接JSON JSON形式を解析できる 。#後のデータオブジェクトを使用しない臨界のJSON JSON形式は、nを用いてろ過の除去された部分で見出さ #私たちは、タイトルとリンクの下にタイトルとH1タグのhrefている必要がある #、PythonのオブジェクトにJSONデータ OBJ =をjson.loads(r.text) #の印刷(OBJ) #の出口() #を取り出し、使用して動画のタイトルやURLに関連するすべてのデータの定期的な データOBJ = [ ' データ' ] #の印刷(データ) #1 #終了() match_obj_url = re.compile(R&LT ' <a href="(.*)"title=".*全文"target="_blank"> </a>を読む... ' ) URL = re.findall(match_obj_url、データ) #印刷(URL) #の印刷(LEN(URL)) re.compileをmatch_obj_title =(R&LT " <a href=".*"title="(.*)全文"target="_blank">読みます... </> " ) のタイトル= re.findall(match_obj_title、データ) #1 プリント(タイトル) #の印刷(LEN(タイトル)) #の終了() #のサイクル映像情報の各リストを順次抽出されたデータ #タイトル情報を直接使用することができるではなく、後の最終的なスプライスURL URL 2つのホップがある ため、私は中範囲(0,15): #各15ワンリスト2のデータ end_title = タイトル[I] #の印刷(end_title) a_href = " HTTPS://www.vmovierが。 COM " + URL [I] #の印刷(a_href) #の出口() #このビデオは、最後の1ホップの処理に必要なURLではありません requests.get = R&LT(URL = a_href、ヘッダー= ヘッダ) end_href = FanPa(R&LT) #これは最後から二番目のURLである #1 印刷(end_href) #1 出口() video_src = get_video_url(end_href) #プリント(video_src) #1 終了() #オリジナルのビデオを見つけるためにダウンロード開始アドレスの後に 印刷(" ダウンロードSを開始...%"%end_title) ファイルパス = ' shipin / ' + + end_title ' .MP4 ' R&LT = requests.get(URL = video_src)を オープン(ファイルパスと、' WB ' )AS FP: fp.write(r.content)が 印刷(" %Sダウンロードが完了し、"%のend_titleを) #コンテンツを解析するコンテンツを取得するための要求を送信し、SRC取得 DEF get_video_url(end_href): #end_href印刷ココ(end_href)#は、Aの唯一の要素でありますそのインデックスのリストに追加するには ##の出口() #R = requests.get(URL = end_href [0]、ヘッダ=ヘッダ) #の印刷(r.text) #の出口() #ページを印刷するには、ここを、私たちが見ているノーリターンを認めませんでしたビデオリンク #は別の抗上昇機構は非常に解決する究極の武器ヘッドレスブラウザを使用する可能性がある ブラウザ= webdriver.Chromeを(executable_path =パス、オプション= chrome_optionsを) browser.get(end_href [0]) time.sleep( 3 ) #取得ソース、オブジェクトツリーを生成して、ビデオのsrc属性を探すために #の印刷(browser.page_source) #の出口() スープ= BeautifulSoup(browser.page_source、" lxmlの' ) video_src = soup.find(' ビデオ'上記のid =の上に" xpc_video ")[ ' SRC " ] #の印刷(video_src) #の出口() の戻りvideo_src DEF メイン(): #の解析ホーム、すべてのタイトルリンクを返す handle_titleを() IF __name__ == ' __main__ ' : メイン()
ある注意すべき主な問題点:
その捕捉インターフェイスのページ一般遅延読み込み、濾過し、インターフェースのURLから返されたタイトル情報のための1、
2、このサイトは、クライミングのようなアンチセンスメカニズムをジャンププロセスを持っている、あなたは、出力HTMLページはページの我々の必要性であるかどうかを判断するためにステップバイステップを経ることができます
3は、返されたJSONデータなど、いくつかの場所があることは、我々は、フィルタに正規表現を使用するようにそれを得るだろう、厳密なJSON形式ではありません
図4は、時々モジュールは、ページのコンテンツを取得するには、ブラウザインタフェースのドライブを使用する必要があるかもしれページせずに私たちが欲しいものを得ることができない要求を送信要求します
結果: