<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      20214313 實驗四《Python程序設計》報告

      20214313 實驗四《Python程序設計》報告

      課程:《Python程序設計》

      班級: 2143

      姓名: 馮珂

      學號:20214313

      實驗教師:王志強

      實驗日期:2022年5月27日

      必修/選修: 公選課

      一.實驗內容

      Python綜合應用:爬蟲、數據處理、可視化、機器學習、神經網絡、游戲、網絡安全等。

      我選擇了比較實用的爬蟲。在學習爬蟲之前,只知道這是一個可以快速獲取網站內容的東西,抱著好奇試試的心態我開始嘗試起學習用python編寫爬蟲。到這時才知道這里面也有很多學問和坑,需要一步一個腳印。

      網絡爬蟲,是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。

      Python 爬蟲架構主要由五個部分組成,分別是調度器、URL管理器、網頁下載器、網頁解析器、應用程序(爬取的有價值數據)。

      二.實驗過程及結果

      1.準備庫模塊

      主要需要requests和re兩個模塊爬取網頁,json用來字符串格式轉換,os模塊進行文件操作,time模塊查看時間防止重復提取等功能。

      2.執行網頁抓取(發起請求,獲取響應內容)

      通過基本url(種子)來獲取數據,然后探索由種子url提取數據中的下一個url。重復該過程。

      有些網頁有反爬取功能,這里偽造了一個請求頭,假裝正常瀏覽器瀏覽。

      根據回應不同也有不同對策。

      我選擇的是王者全英雄皮膚的抓取。所以網址也會根據英雄不同而改變。

      我提前找到了英雄的id的網址,通過聯系獲得各個英雄的網址來逐個爬取皮膚。

      3.存儲爬取的信息

      提示你爬取是否成功,并存放到指定位置。

      4.計算爬取時間

      5.華為云服務器的調試。

      更新pip至最新版本

      安裝json等庫。

      5.上傳華為云ECS服務器(華為云服務器是之前已經買好的)


      運行程序


      檢測結果

      打開一個圖片

      源代碼
      `

      點擊查看代碼
      import requests
      import re
      import json
      import os
      import time
      
      # 獲取當前時間戳,用于計算爬蟲爬取完畢消耗了多少時間
      now = lambda: time.time()
      
      # 請求頭
      headers = {
          "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
          "Cookie": "pgv_pvid=120529985; pgv_pvi=8147644416; RK=iSx1Z7fSHW; ptcz=d094d0d03f513f6762a4c18a13ddae168782ec153f43b16b604723b27069d0a7; luin=o0894028891; lskey=000100008bc32936da345e2a5268733bf022b5be1613bd2600c10ad315c7559ff138e170f30e0dcd6a325a38; tvfe_boss_uuid=8f47030b9d8237f7; o_cookie=894028891; LW_sid=s116T01788a5f6T2U8I0j4F1K8; LW_uid=Z1q620M7a8E5G6b2m8p0R4U280; eas_sid=m1j6R057x88566P2Z8k074T2N7; eas_entry=https%3A%2F%2Fcn.bing.com%2F; pgv_si=s8425377792; PTTuserFirstTime=1607817600000; isHostDate=18609; isOsSysDate=18609; PTTosSysFirstTime=1607817600000; isOsDate=18609; PTTosFirstTime=1607817600000; pgv_info=ssid=s5339727114; ts_refer=cn.bing.com/; ts_uid=120529985; weekloop=0-0-0-51; ieg_ingame_userid=Qh3nEjEJwxHvg8utb4rT2AJKkM0fsWng; pvpqqcomrouteLine=index_herolist_herolist_herodetail_herodetail_herodetail_herodetail; ts_last=pvp.qq.com/web201605/herolist.shtml; PTTDate=1607856398243",
          "referer": "https://pvp.qq.com/"
      }
      
      
      # 解析函數,返回文本或者二進制或者None
      def parse_url(url, get_b=False):
          try:
              response = requests.get(url, headers=headers)
              response.encoding = "gbk"
              assert response.status_code == 200
              if get_b == True:
                  return response.content
              else:
                  return response.text
          except:
              print("status_code != 200(from parse_url)")
              return None
      
      
      # 處理單個英雄
      def parse_hero_detail(id, name):
          # 保存所有皮膚圖片的本地路徑
          path = f"data/{name}"
          if not os.path.exists(path):
              os.makedirs(path, exist_ok=True)
      
          # 因為不確定每個英雄有多少個皮膚,所以假設單個英雄一共請求10張皮膚,這樣就不會出現皮膚缺少的情況
          for num in range(1, 11):
              # 單個英雄皮膚圖片的url鏈接
              api_url = f"https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{id}/{id}-bigskin-{num}.jpg"
      
              # 如果返回None,則說明 狀態碼不是200,即沒有這個請求的皮膚
              b_data = parse_url(api_url, get_b=True)
      
              if b_data == None:
                  print(f"{name} 一共有{num - 1}個皮膚")
                  print("--------------------------------------------------")
                  # 沒有新的皮膚了,退出循環
                  break
      
              img_path = f"{path}/demo{num}.jpg"
              if not os.path.exists(img_path):
                  try:
                      download_img(img_path, b_data)
                  except:
                      return
                  print(f"{name} 第{num}張皮膚圖片 下載完畢")
      
      
      # 下載圖片
      def download_img(path, b_data):
          with open(path, "wb") as f:
              f.write(b_data)
      
      
      def main():
          # 含有每個英雄對應的id、英雄名稱的url
          api_url = "https://game.gtimg.cn/images/yxzj/web201706/js/heroid.js"
          text = parse_url(api_url)
      
          search_result = re.search('var module_exports = ({.*?})', text, re.S)
          hero_info_str = search_result.group(1)
          hero_info_str = re.sub("'", '"', hero_info_str)
          # 包含 所有英雄以及各自對應的id 的字典
          hero_info_dict = json.loads(hero_info_str)
      
          for hero in hero_info_dict:
              name, id = hero_info_dict[hero], hero
              print(name, id)
              parse_hero_detail(id, name)
      
      
      if __name__ == '__main__':
          start = now()  # 記錄起始時間
          main()  # 主函數
          print(f"耗時: {now() - start}")  # 計算爬蟲執行完畢消耗的時間
      
      
      `

      6.實驗問題及解決方法。

      問題1:pip指令無法正常起作用。
      解決方法:更新pip。
      問題2:程序上傳后無法運行。
      解決方法:下載相關庫文件以及更新python版本。

      三、課程及實驗總結

      建議 :

      1、老師可以在講課之前,提前發布以下可能講的知識點,不然真的很難跟上的說,雖然靠課后學習也能掌握,但是還是課前好啊。
      2、希望老師能保持自己的講課風格,這樣生動的課堂真的很有意思(不說能不能跟上)!
      3、老師還是保重身體重要。

      總結及感想:

      雖然學習python只有幾個月的零碎時間,但是從我開始接觸到這門語言開始,我就知道這是一個簡潔又靈活的語言。
      從開始的打出第一個句子hello world,到逐漸了解python的變量類型及使用,字典,集合,元組,列表等的用法,再到自己編寫猜數游戲,寫出自己的第一個socket。
      我開始對這門語言有了越來越深的興趣。在這幾個月里,雖然課程不多,但是我學習到的知識,卻感覺非常充實,python有無數的東西可以實現,我幾乎可以用python報體溫,自動回復。
      這太酷了不是嗎?對于一個男生來說。

      上圖是在練習基礎變量和語法,雖然是基礎,但是真的記住也很困難的,中間好多挫折。


      上圖是一個簡單的socket。

      后來,老師講到了爬蟲,也是我當時對python最好奇的地方,盡管聽的磕磕絆絆,但是通過不斷練習,測試,自己在b站學習,我終于也可以自己寫一個爬蟲了。
      最后一次作業,我也用所學,寫了一個爬取王者皮膚的爬蟲,以此來表示我對python的興趣的開始,始于爬蟲。
      希望在接下來的時間里也能繼續對編程語言的興趣,多多學習,碰撞出思維的火花!

      posted on 2022-05-27 19:24  fffk  閱讀(93)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 国产精品一久久香蕉国产线看观看| 国产午夜视频在线观看| 白嫩少妇无套内谢视频| 妺妺窝人体色www看美女| 国产乱啊有帅gv小太正| 99在线国内在线视频22| 性一交一乱一伦| 国产sm调教折磨视频| 日本美女性亚洲精品黄色| 国产精品自拍三级在线观看| 麻豆a级片| 日韩精品一区二区三区中文无码 | 无人区码一码二码三码区 | 邻居少妇张开腿让我爽了一夜| 国产一区二区三区乱码| 99在线 | 亚洲| 办公室强奷漂亮少妇同事| 精品国产成人一区二区| 成人精品日韩专区在线观看| 五月丁香啪啪| 夜夜躁狠狠躁日日躁视频| 成人av天堂男人资源站| 国产卡一卡二卡三免费入口| 婷婷综合亚洲| 正在播放肥臀熟妇在线视频| 在线无码免费的毛片视频| 国产乱女乱子视频在线播放| 赣榆县| 亚洲AV成人无码久久精品四虎| 无码人妻丰满熟妇区五十路在线| 色情一区二区三区免费看| 91精品亚洲一区二区三区| 熟妇激情一区二区三区| av大片在线无码免费| 亚洲黄色一级片在线观看| 好男人好资源WWW社区| 崇义县| 国产av亚洲精品ai换脸电影| 公与淑婷厨房猛烈进出视频免费| 日韩国产成人精品视频| 国产精品女视频一区二区|