1. 程式人生 > 其它 >室友吃個泡麵的時間,我就用Python程式碼下載了幾千張手機桌布,簡直yyds!

室友吃個泡麵的時間,我就用Python程式碼下載了幾千張手機桌布,簡直yyds!

手機桌布電腦桌布,對於廣大男性同胞來說,最喜歡的不就是好看的麼,十幾行程式碼分分鐘就下載一大堆,用都用不完,來吧,展示!


 

一、工善欲其事,必先利其器

1、開發環境

這裡咱們使用Python環境,只要不是Python2就行,編輯器的話,使用pycharm,21版的有很多方便的工具,誰用誰知道,我就不 一 一 贅述了。

2、第三方模組

requests 
parsel 

requests 是資料請求模組,parsel 是提取資料 解析的模組,直接pip安裝即可

3、安裝模組以及出現的問題

  • 如果安裝python第三方模組:
    1. win + R 輸入 cmd 點選確定, 輸入安裝命令 pip install 模組名 (pip install requests) 回車
    2. 在pycharm中點選Terminal(終端) 輸入安裝命令
  • 安裝失敗原因:
    • 失敗一: pip 不是內部命令
      解決方法: 設定環境變數

    • 失敗二: 出現大量報紅 (read time out)
      解決方法: 因為是網路連結超時, 需要切換映象源
      清華:https://pypi.tuna.tsinghua.edu.cn/simple
      阿里雲:http://mirrors.aliyun.com/pypi/simple/
      中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/
      華中理工大學:http://pypi.hustunique.com/
      山東理工大學:http://pypi.sdutlinux.org/
      豆瓣:http://pypi.douban.com/simple/
      例如:pip3 install -i https://pypi.doubanio.com/simple/ 模組名

    • 失敗三: cmd裡面顯示已經安裝過了, 或者安裝成功了, 但是在pycharm裡面還是無法匯入
      解決方法: 可能安裝了多個python版本 (anaconda 或者 python 安裝一個即可) 解除安裝一個就好
      或者你pycharm裡面python直譯器沒有設定好

二、流程

1、資料來源分析
爬取網站是什麼,想要獲取網站什麼樣資料內容;
比如爬取圖片,從一張圖片去分析;
通過開發者工具進行抓包分析,對比我們想要圖片url地址一些引數;

2、爬蟲程式碼實現步驟:
1).傳送請求, 對於分析得到url地址傳送請求

  • 請求網址
  • 請求方式
    請求頭引數 >>> 偽裝 可以把python程式碼偽裝成瀏覽器(客戶端)傳送請求
    如果不進行偽裝會有什麼後果 >>> 不會給你返回你想要資料;

2).獲取資料, 獲取response伺服器返回響應資料;
3).解析資料, 提取我們想要資料內容 圖片url地址 以及 圖片標題;
4).儲存資料, 把圖片資料儲存到本地;

三、程式碼展示

1、匯入模組

import requests
import parsel 

 

2、傳送請求

  • headers 請求頭引數, 可以開發者工具裡面直接進行復制, 其次headers字典資料型別, 鍵值對
  • user-agent: 使用者代理表示瀏覽器基本身份標識
  • cookie: 使用者資訊, 檢測使用者是否有登陸賬號
for page in range(2, 11):
    url = f'https://sj..com/woman/{page}.html'
    headers = {
        'cookie': 't=f2cf055ce8713058cbfdbd1561c38e86; r=1281; Hm_lvt_86200d30c9967d7eda64933a74748bac=1645625923,1646892448; Hm_lpvt_86200d30c9967d7eda64933a74748bac=1646894465',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)   #  <Response [200]> 返回響應物件 200狀態碼標識請求成功

 

3、 獲取資料

獲取伺服器返回資料內容,獲取響應物件文字資料 。

print(response.text)

 

字串資料返回資料內容,和我們在開發者工具裡面看到不一樣 ,說明你被伺服器識別出來是你爬蟲程式, 所以他沒有給你返回資料。

4、解析資料

css選擇器 xpath re 三種解析方式都可以去用 選擇最適合

css選擇器: 根據標籤屬性提取資料內容

對於獲取response.text 進行資料型別轉換 轉成 selector 物件

attr() 屬性選擇器 .egeli_pic_li .egeli_pic_dl dd a

img 都是定位標籤, 告訴它是哪一個標籤

img::attr(src) 取img標籤裡面的src屬性資料getall() 獲取所有標籤內容資料 返回列表資料型別

selector = parsel.Selector(response.text)
src = selector.css('.egeli_pic_li .egeli_pic_dl dd a img::attr(src)').getall()
alt = selector.css('.egeli_pic_li .egeli_pic_dl dd a img::attr(alt)').getall()
for img_url, title in zip(src, alt):
    img_url = img_url.replace('edpic_360_360', 'edpic_source')

 

4、儲存資料

img_content = requests.get(url=img_url, headers=headers).content  # 獲取二進位制資料內容
with open('img\\' + title + '.jpg', mode='wb') as f:
    f.write(img_content)
print(img_url, title)
# 我給大家準備了這些資料,直接在群裡就可以免費領取了。
# Python學習交流群:815624229

 

四、效果展示

爬取效果

這下桌布夠用了


兄弟們,文章看累了,再給手也提供一點運動,幫我點個贊和收藏,下次更更有意思的。