爬虫小プログラム-王者栄耀全皮膚を這い出す

2579 ワード

学習理由:
爬虫類は面白い技術で、プログラムの魅力を感じさせ、視覚的な衝撃感と達成感をもたらし、プログラミングに対する学習興味を大きく高めることができます.
一、爬虫類コード:
プロセス:
  • 目標を明確にして、私は王者に登って皮膚を輝かせます.
  • 分析過程、ウェブサイトに入ってバッグをつかんで皮膚のピクチャーの記憶位置を理解します;
  • 分解ステップは、皮膚画像の記憶規則を探し出し、実現ステップをいくつかに分解する.
  • は徐々に運行し、必要なパラメータを取得し、構想を完備する.

  • 注意事項:
  • タスクに時間がかかります.5~10分ほどかかり、完成を待つだけです.原因:この爬虫類コードの比較基礎;
  • 具体的な流れは注釈を見て、構想は自分で学ぶ必要があり、ネット上には多くの資源があり、プログラミングの思考を把握することを重視している.
  • コードについて:
  • 同級フォルダpicを新設し、記憶しやすい(コードファイル名を自分で変更できる).
  • に異常捕獲が追加され、コード終了後もプログラムが皮膚名を取得する問題が解決された.


  • ファイルフレーム:
    #    :
    spider(      )
    #    :
    --pic(       )
    --01_         .py
    

    コード:
    # 1.      
    import requests
    
    
    # 2.  json  
    url = 'http://pvp.qq.com/web201605/js/herolist.json'
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
    response = requests.get(url, headers=headers)
    json_list= response.json()
    
    # print(len(json_list)) #      :95   
    # print(json_list) #     ,  json_list   
    # [{'ename': 105, 'cname': '  ', 'title': '    ', 'new_type': 0, 'hero_type': 3, 'skin_name': '    |    '}, {...}, ...]
    
    try:
        # 3.  json  ,    
        for m in range(len(json_list)):
            #     
            hero_num = json_list[m]['ename']
            #     
            hero_name = json_list[m]['cname']
            #       
            skin_name = json_list[m]['skin_name'].split('|')
            #       
            skin_count = len(skin_name)
            print('    :',hero_name,'     :',skin_count) #          
    
            #          
            for i in range(1, skin_count + 1):
                #     ,          
                url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' #         
                url_pic = url + str(hero_num) + '/' + str(hero_num) + '-bigskin-' + str(i) + '.jpg'
                #       
                picture = requests.get(url_pic).content
                # print(picture) #       
                #           : pic/   -   .jpg (    pic   )
                with open('pic/'+ hero_name + ' - ' + skin_name[i - 1] + '.jpg', 'wb') as f:
                    f.write(picture)
    except KeyError as e:
        #     :                   
        print('      !')
                
    

    二、最終結果:
    通常のコードはデータを這い出す効率が低く、データが多くなると待ち時間が大幅に長くなり、データを這い出す時間をどのように短縮するか、爬虫類の効率を高める方法を知ることができます.
    クリックジャンプ:爬虫類の効率を高める方法