6.14-pythonの学習

コンテンツ今日

Pythonの爬虫類:

1.ビデオは、すべてのビデオページ梨をクロール:

' '' 
''' 

' '' 
ビデオ梨をクロール:
リクエストURL:
    https://www.pearvideo.com/ 
    
リクエストメソッド:
    GETの
    
リクエストヘッダ:
    ユーザーエージェント:Mozillaの/ 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36(ヤモリ様KHTML)クローム/ 65.0.3325.146サファリ/ 537.36 
「」 ' 

#インポート要求
#再#インポート正規モジュール
#1 
##1を、梨ビデオの詳細ページの送信要求、応答データフェッチ
=#応答をrequests.get( = URL 'HTTPS://www.pearvideo.com/') 印刷(response.status_code) 印刷(response.text) 
## re.findall( '通常のマッチングルール'、 'テキストを解析'、「ノーマルモード「)
は##のre.S:グローバルモード(旅行の試合のためのテキスト全体を)
。##は、現在の位置を指し、
## *は、すべての検索指し
' 『#』を
#<のhref = "video_1543373"
#<のhref = "ビデオ_ (。*?)" #のエキス1543373 
# '' ' 
##2、ホームビデオ詳細ページのIDの取得
#RESを= re.findall(' <のhref =「ビデオ_(。*?) " 'response.text、re.S) 印刷(RES) #
 
#RESでM_ID用:
##ステッチの詳細ページのURLの
#1 detail_url =' https://www.pearvideo.com/video_「+ M_ID 
#を印刷(detail_url)
のインポート要求
のインポートモジュールの正規#再
#のuuid.uuid4()セクションでは、タイムスタンプに基づいて独自のランダムな文字列の世界を生成することが
インポートUUID 
#クローラの三部作の
第1位、要求を送信し
get_page(URL)DEF:
    レスポンス=要求を.get(URL)
    レスポンスを返す
#2を、分析データ
、ビデオの詳細ページのIDのための#パースホームページ
DEFのparse_index(テキスト):






    = re.findall RES( '<のhref = "ビデオ_(*)?"。'、テキスト、re.S) 印刷(RES)

    detail_url_list = [] 
    RESでM_ID用:
        #ステッチの詳細ページのURLを
        detail_url =「HTTPS ://www.pearvideo.com/video_ '+ M_ID 
        #印刷(detail_url)
        detail_url_list.append(detail_url) 
印刷(detail_url_list)

    detail_url_list返す

動画のURLのために#の解決の詳細ページを
DEFのparse_detail(テキスト):
    ' '' ' '' 
    '' ' 
        (*。?):括弧の内容を抽出
        *:?直接試合を。
        <ビデオのWebKit-playsinline = "" playsinline = "" X-のWebKit-オンエア= ""自動再生= "自動再生" SRC =「https://video.pearvideo.com/mp4/adshort/20190613/cont-1566073-14015522_adpkg- ad_hd.mp4 "スタイル="幅:100%;高さ:100%; "> </ビデオ> 
        
    :。?(。*?)定期<ビデオ* SRC =" " 
    これらは、分析プロセスは、書き込みする必要はありません
    
    定期的に: = srcUrl "(。*?)" 
    '' ' 
    re.findallをmovie_url =(' srcUrl = "(。*?)"」、テキスト、re.S)[0]に
    戻りmovie_urlの


#3、データが格納されている
デフsave_movie(movie_url ):
    応答= requests.get(movie_url)
    ローカルビデオに書き込む#
    オープン(とF 'uuid.uuid4 {()} MP4'、F AS 'WB'):
        f.write(応答。コンテンツ) 
        f.flush()

IF __name__ == '__main__':キーメイン入力+#

    #1は、ホームページに要求を送信します
    := get_page index_res(URL = '//www.pearvideo.com/ HTTPS')

    上記の詳細ページのホーム・ページの解析IDで第2位、
    detail_url_list = parse_index(index_res.text) 印刷(detail_url_list)

    ごとに、#3、詳細ページのURLは、リクエスト送信
    :detail_url_listでdetail_urlため
        detail_res = get_page(URL = detail_url)
        印刷(detail_res.text)

        動画のURLの詳細ページを解析し、#4を
        movie_url = parse_detail(detail_res.text) 
        印刷(movie_url)

        #5、映像保存
        save_movie(movie_urlを)

パフォーマンスを向上させるため2.上記のクロール:

リクエストインポート
再インポートモジュール正規#
#1 uuid.uuid4()は、タイムスタンプの期間だけランダムな文字列に応じて生成されてもよい
インポートUUID 
#インポートモジュールスレッドプール
インポートThreadPoolExecutorのconcurrent.futuresから
#50スレッドのスレッドプール制限
プール= ThreadPoolExecutor( 50) 
クローラの三部作の

第1位は、要求を送信
DEF get_page(URL):
    印刷(F '非同期タスクを開始:URL {}')
    レスポンス= requests.get(URL)
    の戻り応答


#2、分析データ
#解析ホームページのを動画の詳細ページID 
DEFのparse_index(RES):

    応答= res.result()
    ホームすべてのIDを抽出#
    ID_LIST = re.findall( '<HREF = "?ビデオ_(*)"'、response.text、再を。 S) 印刷(RES)

    #IDは循環リスト
    ID_LISTでM_ID用:
        #ステッチの詳細ページのURL
        = + M_ID detail_url 'https://www.pearvideo.com/video_' 印刷(detail_url)
        詳細ページget_page関数提出する#のURL 
        pool.submitを(get_page、detail_url).add_done_callback(parse_detail) 

は、ビデオの詳細ページを解析URLの
DEFのparse_detail(RES):
    応答= res.result()
    movie_url = re.findall( ' "?(*)" srcUrl ='、response.text、re.S)[0] の非同期転送は、動画のURLを提出しました機能するためにget_page、結果はsave_movie渡すために戻っ
    pool.submitを(get_page、movie_url).add_done_callback(save_movie)


#3、データ保存
DEFのsave_movie(RES):

    movie_res = res.result() 
をローカルビデオを書く
    オープンで(F 'uuid.uuid4 {()} MP4'、 'WB')F AS:
        f.write(movie_res.content) 
        印刷(F '末端ビデオダウンロード:{movie_res.url}) 
        f.flush()


__name__ == '__main__'であれば:#1主は+ ENTER 

    #get_page非同期要求がparse_indexする関数の結果に送られ、
    URL = 'https://www.pearvideo.com/' 
    pool.submit(get_page、URL)を.add_done_callback(parse_index)

詳細な使用を3.requests:

「」「
GETリクエストを説明するために、
」「」
「」 ' 
ユーザー-剤- アクセスをほとんど発見知っ
リクエストURLを:
    https://www.zhihu.com/explore 
    
リクエストメソッド:
    GETの
    
リクエストヘッダ:
    ユーザーエージェント:Mozillaの/ 5.0(Windowsの10.0 NTは、ヤモリのようなWOW64)のAppleWebKit / 537.36(KHTML、)クローム/ 65.0.3325.146サファリ/ 537.36 
    
    クッキー
'' ' 
アクセスはほとんど知っている
#インポート要求
#レスポンス= requests.getを(URL =' HTTPS://www.zhihu .COM /「)探検
#印刷(response.status_code)#400 
エラーページ#を返します)#印刷(response.textを


:ほとんど知られてリクエストヘッダに運ば#アクセスパラメータ
のインポートが要求

#リクエストヘッダ辞書を 
#ヘッダを= {
# 'のUser-Agent': 'のMozilla / 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36(ヤモリのようにKHTML、)クローム/ 65.0.3325.146サファリ/ 537.36' 
#} 
get要求では#、追加-Agentをユーザー
#応答requests.get =(URL = 'HTTPS://www.zhihu.com/explore'、ヘッダ=ヘッダ)
#印刷(response.status_code)200は、#1で
の##印刷(response.text)
オープンと#(「zhihu.html '' W 'エンコード=' UTF-8 ')、F AS:
#1 f.write(response.text)


' ''は、
リクエストパラメータparamsは
アクセスBaiduは安徽省工科大学のURLを検索
https://www.baidu.com/s ?WD =安徽工科大学のpn = 10&
https://www.baidu.com/s?wd=安徽工科大学のpn = 20& 
'' ' 
インポートでurlencodeのurllib.parseから
#のURL =' https://www.baidu 。COM / sの?WD =%E8%94%A1%E5%%90%E5%以下の9D%A4' BE
#のURL = + 'Https://www.baidu.com/s?'でurlencode({ "WD": " カイ徐くん"}) { "WD ":"カイ徐くん「}) 
URL = 'https://www.baidu.com/s?'
ヘッダー= { 
    'のUser-Agent ':'のMozilla / 5.0(Windows NTの10.0; WOW64) AppleWebKit / 537.36(KHTMLは、ヤモリなど)クローム/ 65.0.3325.146サファリ/ 537.36 " 
} 
#印刷(URL) アドパラメータparamsがメソッドの取得
#応答= requests.get(URL、ヘッダ =ヘッダ、のparams = {「WD ":"安徽工科大学"})
応答= requests.get(URL、ヘッダー=ヘッダ、paramsは= {" WD ":"安徽工科大学"" PN ":" 20「}) プリント(response.text)
( 'gongcheng2.html' 'W'、エンコード= 'UTF-8')とのオープンF AS:
    f.write(response.text)


'' ' 
クッキー運ぶ
ログインログイン認証クッキーのクラックのGitHub運ば

リクエストURLを:
    https://github.com/settings/emails 
    
要求メソッド:
    GETの
    
リクエスト・ヘッダー:
    ユーザーアジャン
    
    クッキー:has_recent_activity = 1; _ga = GA1.2.1416117396.1560496852。_gat = 1。TZ =アジア%2FShanghai。_octo = GH1.1.1728573677.1560496856。_device_id = 1cb66c9a9599576a3b46df2455810999。user_session = 1V8n9QfKpbgB-DhS4A7l3Tb3jryARZZ02NDdut3J2hy-8scm。__Host-user_session_same_site = 1V8n9QfKpbgB-DhS4A7l3Tb3jryARZZ02NDdut3J2hy-8scm。LOGGED_IN = YES; dotcom_user = TankJam。_gh_sess = ZS83eUYyVkpCWUZab21lN29aRHJTUzgvWjRjc2NCL1ZaMHRsdGdJeVFQM20zRDdPblJ1cnZPRFJjclZKNkcrNXVKbTRmZ3pzZzRxRFExcUozQWV4ZG9kOUQzZzMwMzA2RGx5V2dSaTMwaEZ2ZDlHQ0NzTTBtdGtlT2tVajg0c0hYRk5IOU5FelYxanY4T1UvVS9uV0YzWmF0a083MVVYVGlOSy9Edkt0aXhQTmpYRnVqdFAwSFZHVHZQL0ZyQyt0ZjROajZBclY4WmlGQnNBNTJpeEttb3RjVG1mM0JESFhJRXF5M2IwSlpHb1Mzekc5M0d3OFVIdGpJaHg3azk2aStEcUhPaGpEd2RyMDN3K2pETmZQQ1FtNGNzYnVNckR4aWtibkxBRC8vaGM9LS1zTXlDSmFnQkFkWjFjanJxNlhCdnRRPT0%3D  -  04f6f3172b5d01244670fc8980c2591d83864f60
    
'' ' 
インポート要求

#要求URLの
https://github.com/settings/emails URL =' ' 
リクエストヘッダ
ヘッダを= { 
    'のUser-Agent ':'のMozilla / 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36( KHTML、クロム/ 65.0.3325.146サファリ)ヤモリ様/ 537.36」、
    リクエストヘッダスプライシング位クッキー
    # 'クッキー':「has_recent_activity = 1; _ga = GA1.2.1416117396.1560496852。_gat = 1。TZ =アジア%2FShanghai。_octo = GH1.1.1728573677.1560496856。_device_id = 1cb66c9a9599576a3b46df2455810999。user_session = 1V8n9QfKpbgB-DhS4A7l3Tb3jryARZZ02NDdut3J2hy-8scm。__Host-user_session_same_site = 1V8n9QfKpbgB-DhS4A7l3Tb3jryARZZ02NDdut3J2hy-8scm。LOGGED_IN = YES; dotcom_user = TankJam。
} 
#github_res = requests.get(URL、ヘッダー=ヘッダ)

インポート要求の
クッキー= {
    'クッキー':「has_recent_activity = 1。_ga = GA1.2.1416117396.1560496852。_gat = 1。TZ =アジア%2FShanghai。_octo = GH1.1.1728573677.1560496856。_device_id = 1cb66c9a9599576a3b46df2455810999。user_session = 1V8n9QfKpbgB-DhS4A7l3Tb3jryARZZ02NDdut3J2hy-8scm。__Host-user_session_same_site = 1V8n9QfKpbgB-DhS4A7l3Tb3jryARZZ02NDdut3J2hy-8scm。LOGGED_IN = YES; dotcom_user = TankJam。
} 

github_res = requests.get(URL、ヘッダー=ヘッダ、クッキー=クッキー)

プリント(github_res.textで'15622792660')

実施例4:フィルムはクレソンtop250情報をクロール:

'' '' '' 
'' ' 
ホーム:
    https://movie.douban.com/top250 
    GET 
    のUser-Agent:Mozillaの/ 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36(KHTML、ヤモリなど)クローム/ 65.0を。 3325.146サファリ/ 537.36 
    
定期日時:
    #映画の詳細ページのURL、画像へのリンク、映画名、映画のスコア、評価者の数
    の<divクラス= "アイテム"> *のhref = "(。*?)"> * SRC =。?。? "(。*?)"。 *?<スパンクラス= "タイトル">(。*?)</ span>を。*?<スパンクラス= "rating_num"。*?>(。*?)</ span>を。*?<span>のアル評価(。*?)
'' ' 
インポートでは、要求
のインポートを再
https://movie.douban.com/top250' URL = ' 
ヘッダ= { 
    ':'のMozilla / 5.0(Windowsエージェント・ユーザーを- ' NT 10.0; WOW64)のAppleWebKit / 537 。36(KHTMLは、ヤモリのような)クローム/ 65.0.3325.146サファリ/ 537.36 ' 
} 
#1、クレソンTOP250送信要求応答データをフェッチします
=応答(URL、ヘッダ=ヘッダ)requests.get 

#印刷(response.text)

データの定期的な直接抽出して#2、 映画の詳細ページのURL、画像へのリンク、映画名、映画のスコア、評価者の数
(movie_content_list = re.findallを
    #定期的なルール
    '<DIV CLASS = "アイテム" >。*?のhref = "(。*?)">。*?SRC = "(。*?)"。*?<スパンクラス= "タイトル">(。 (。*?)「、*?)</ span>を。*?<スパンクラス= "rating_num。" *?>(。*?)</ span>の評価人。*?<span>の

    #の解析テキスト
    応答を。テキスト、

    #マッチングモード
    re.S)

movie_content_listでmovie_content用:
    各フィルムの#解凍割り当て
    detail_url、movie_jpg、名前、ポイント、NUM = movie_content 
    データ= F「映画のタイトル:{名前}、詳細ページのURL:{detail_url}画像URL:{movie_jpg}、評価:{ポイント}、評価者の数:{NUM} \ n 'は
    印刷(データ)

    #3、データを保存し、情報を動画ファイルに書き込まれます
    :開放Fとして( 'douban.txt'、 'A'、エンコード= 'UTF-8')と
        f.write(データ)

II。今日の仕事

ブロガーは英語cet6を見直し忙しいですので、より多くのことができます。。  

 

おすすめ

転載: www.cnblogs.com/hjeqng/p/11024897.html