爬蟲小程序(爬取英雄聯盟的英雄皮膚)


一、爬蟲流程:

    1、明確目標:url = https://daoju.qq.com/lol/list/17-0-0-0-0-0-0-0-0-0-0-00-0-0-1-1.shtml?ADTAG=innercop.lol.SY.shoppinglist_new_17

    2、判斷數據類型:動態/靜態(這里是動態類型,是通過JS渲染的)

   備注:如何來判斷數據類型?是通過源碼來判斷的,如果網頁源碼中可以找到我們需要爬取的數據,那么就代表是靜態,可以通過訪問網頁后結合正則就可以獲取數據,如果網頁源碼找不到我們需要的數據,則是動態,一般動態都是通過js進行渲染頁面

    3、利用工具找到數據:可以通過F12或者抓包工具

   

 

 

     4、解析數據,提取數據

     5、保存數據:數據庫保存或者文件保存

 

二、代碼示例

    1、准備工作:創建一個‘D:\\LOL_pic’文件夾,存儲數據

                           下載requests包:py -3.6 -m pip install requests 

    2、代碼編寫

import requests
import json
import time
total = 55  # 從網頁可以看到有54頁
try:
    for page in range(1,total+1):
        url = "https://apps.game.qq.com/daoju/v3/api/hx/goods/app/v71/GoodsListApp.php?view=biz_cate&page={}&pageSize=16&orderby=dtShowBegin&ordertype=desc&cate=17&appSource=pc&plat=1&output_format=jsonp&biz=lol&_=1576484717258".format(page)
        header = {"User-Agent":"使用自己的"}
        respon = requests.get(url=url, headers=header)
        content = respon.text  # 如果數據是字符串格式使用 .text,如果數據是二進制格式使用 .content,如果數據是JSON格式使用 .json()
        # print(content)
        result = content.split("=", 1)[1]  # 得到的是一個字符串,把他處理為字典字符串(json),以便轉換
        data = json.loads(result)  # 把數據類型轉換為字典
        for picture_url in data["data"]["goods"]:
            img_name = picture_url["propName"]
            if '/' in img_name:
                img_name = img_name.replace('/', '-')  # 處理文件名有‘/’的問題
            img_url = picture_url["propImg"]
            picture = requests.get(url=img_url, headers=header).content  # 獲取圖片信息,數據類型是二進制
            with open(r'D:\LOL_pic\{}.jpg'.format(img_name), 'wb') as f:  # 圖片使用二進制寫
                f.write(picture)
        print("第{}頁爬取成功".format(page))
        time.sleep(3)  # 防止卡死
except Exception as e:
    print("數據抓取異:{}".format(e))
finally:
    print("程序執行完畢")

    3、執行結果

    

 

 

三、python 文件打包

    1、安裝第三方包:py -3.6 -m pip install pyinstaller

                                   py -3.6 -m pip install cryptography

         注意:由於這兩個包比較大,請一定保證網速,否則會報錯

        在安裝時遇到的情況如下:

        

 

        表示超時,網速原因,可以到https://www.lfd.uci.edu/~gohlke/pythonlibs/#genshi網站上去拉取:PyInstaller‑3.5‑py2.py3‑none‑any.whl 這個文件下來,

        然后在cmd 執行 py -3.6 -m pip install PyInstaller‑3.5‑py2.py3‑none‑any.whl 命令

        因為這兩包是多個小包組成的,如果遇到中途有某個包下載不了的情況,可以到上面這個網站去拉取對應的文件下來安裝,舉個例子:

  

 

 

   總之:保證網速會少去很多麻煩

    2、在cmd輸入命令:pyinstaller -F D:\test.py   # 這個py文件是需要處理成.exe的文件

        如果在執行的時候遇到下面這個情況,代表你的 cryptography 包未安裝或者安裝失敗導致的,請重新安裝

  

 

   安裝成功的圖如下所示,請注意生成目錄

  

 

   

 

    3、拖至桌面,雙擊即可運行,如果需要更換圖標,操作流程如下所示:

        首先:到網上去找一個.ico的圖標,免費圖標官網的鏈接 https://www.easyicon.net/

         

 

 

        然后:cmd運行命令  pyinstaller -w -i C:\Users\xxx\LOL_crawler\pc.ico C:\Users\xxx\LOL_crawler\LOL_img_program.py # 這是絕對路徑,用相對路徑也是可以的

  

        最后:成功后到生成的路徑下可看到如下的內容

  

 

結束!!!如有疑問請留言!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM