老司機教你用python來爬取妹子圖,帶好衛生紙

来源:https://www.cnblogs.com/chengxuyuanaa/archive/2020/04/29/12781002.html
-Advertisement-
Play Games

我前幾篇文章都是說一些python爬蟲庫的用法,還沒有說怎樣利用好這些知識玩一些好玩的東西。那我今天帶大家玩好玩又刺激的,嘻嘻!對了,requests庫和正則表達式很重要的,一定要學會!一定要學會!!一定要學會!!!我現在的爬蟲基本都是用這兩樣東西來爬的。所以學不學你看著辦吧。 這裡還要註意:不管你 ...


我前幾篇文章都是說一些python爬蟲庫的用法,還沒有說怎樣利用好這些知識玩一些好玩的東西。那我今天帶大家玩好玩又刺激的,嘻嘻!對了,requests庫和正則表達式很重要的,一定要學會!一定要學會!!一定要學會!!!我現在的爬蟲基本都是用這兩樣東西來爬的。所以學不學你看著辦吧。


這裡還要註意
不管你是為了Python就業還是興趣愛好,記住:項目開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,裡面很多新python教程項目,還可以跟老司機交流討教!

 

來到今天的重點,我今天發現一個網站很好爬的,非常適合新手,我沒有設置請求頭什麼的爬了很多遍很沒有封我ip和給我返回403之類的,所以他對我們第一次玩爬蟲的人來說很友好。這個網站就是今日頭條。最重要的是這裡面有很多美女圖片,我們可以把它們爬下來!!!是不是想想都要流鼻血啊?

 

文章首發於公眾號「日常學python」

 

我們今天要爬的就是他的圖集,先看看網站。搜索美女,然後點擊圖集,可以看到下麵這些內容

 

我們要做的就是把上面的圖片給爬下來。

 

那開始分析網站。按下f12,然後點擊network,刷新下你可以看到這些

 

進行尋找哪個請求返回這些圖片的,在網頁上可以看到圖片會隨著你下拉網頁而進行顯示更多的圖片,這是動態載入的,所以可以輕鬆知道這個可以在xhr文件中找到,果然,你看

 

不斷往下拉,不斷地發送請求,點擊這個請求看看是返回什麼數據

 

可以看到這是個json,裡面有圖片的url,這個就是我們要找的東西,那我們可以用json庫來解析,還有這個網站是get請求,這樣就可以用requests庫來發送然後解析下就可以了,非常簡單。

 

那麼分析就到這裡,直接上代碼

import requests, os
path_a = os.path.abspath('.')
kw = ''
while True:
   kw = input('請輸入你要獲取的圖片(若想結束請輸入1)')
   if kw == '1':
       print('已退出,你下載的圖片已保存在'+path_a+',請查看!')
       break
   for x in range(0, 1000, 20):
       url = 'https://www.toutiao.com/search_content/?offset='+str(x)+'&format=json&keyword=%s&autoload=true&count=20&cur_tab=3&from=gallery' % kw
       response = requests.get(url)
       data = response.json()['data']
       if not data:
           print('下載'+kw+'圖片完畢,請換個關鍵詞繼續')
           break
       n = 1  # 記錄文章數
       for atlas in data:
           # 創建目錄
           title = atlas['title']
           print(atlas)
           try:
               if title not in os.listdir('.'):  # 防止文件名已經存在
                   os.mkdir(title)
           except OSError as e:
               print('文件名出錯,創建目錄失敗,重新創建一個隨機名字')
               title = kw + '文件名出錯'+str(x)
               if title not in os.listdir('.'):
                   os.mkdir(title)
           k = 1  # 記錄下載的圖片數
           path = os.path.join(path_a, title)
           # 轉進圖片目錄
           os.chdir(path)
           for image in atlas['image_list']:  # 這個鏈接獲取的圖片是小張的,看著不夠爽,所以下麵替換成大的圖片
               image_url = image['url'].replace('list', 'large')  # 改個鏈接獲取大的圖片
               atlas = requests.get('http:'+image_url).content
               with open(str(k)+'.jpg', 'wb') as f:  # 把圖片寫入文件內
                   f.write(atlas)
               print('下載完第%d個文章的%d幅圖完成' % (x+n, k))
               k += 1
           n += 1
           # 轉出圖片目錄
           os.chdir(path_a)
複製代碼

 

這個只用了requests庫基本就能完成了,os庫是用來操作文件目錄的,這裡就不詳細說了。可以看到,代碼量非常少,除開註釋就大概四十行吧,是不是比其他語言簡潔多了?是不是requests庫很好用?這裡可以充分體現了人生苦短,我用python的真理。

 

而且,他還可換關鍵字繼續搜,你想搜什麼照片都可以。

 

下篇文章寫個requests庫和正則來爬內容的文章,讓你們感受下正則的強大!

 

最後給你們看下結果

 

我要去買營養快線了。這裡還要註意:不管你是為了Python就業還是興趣愛好,記住:項目開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,裡面很多新python教程項目,還可以跟老司機交流討教!

本文的文字及圖片來源於網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 0.前言主要說明本次博客針對的作業情況 第二階段的學習也結束了,在此做一些總結和回顧;相比第一階段的學習確實難度增加了,作業的分數也不太好,完成作業需要花的時間更多了。1.作業過程總結①總結三次作業之間的知識迭代關係; 第四次作業中主要是正則表達式和繼承關係的運用,第五次作業就是關於類的繼承和多態性 ...
  • 設計模式總結 創建型模式 創建型模式隱藏了這些類的實例是如何被創建和放在一起,整個系統關於這些對象所知道的是抽象類所定義的介面。這樣,創建型模式在創建了什麼、誰創建它、它是怎麼被創建的,以及何時創建這些方面提供了很大的靈活性。 1. 單例模式 保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。 ...
  • 項目概述: 【備註】本項目開發流程,將依次按照上述開發步驟編排,後續將出第一篇.... ...
  • 1.Spring 框架的概念? Spring框架是一個開放源代碼的J2EE應用程式框架,由Rod Johnson發起,是針對bean的生命周期進行管理的輕量級容器(lightweight container)。 Spring解決了開發者在J2EE開發中遇到的許多常見的問題,提供了功能強大IOC、AO ...
  • 一、enum關鍵字 enum關鍵字是在Java1.5也就是Java SE5之後引入的一個新特性:它通過關鍵字enum來定義一個枚舉類,這個被定義的枚舉類繼承Enum類,這個枚舉類算是一種特殊類,它同樣能像其他普通類一樣擁有構造器、方法,也能夠實現介面,但是它不能再繼承其他別的類,因為它的直接父類是E ...
  • 十分鐘腦圖加說明,搞定系統分析師的絕對核心 需求工程 前言 分析師系列,我已經很久沒有寫了。 因為系統分析師的考試內容與系統架構設計師的考試內容有許多重合部分。所以,我在 "系統分析師 軟體水平考試(高級) 開篇" 著重描述了兩者的區別,就沒有花費太多時間在這方面了。 然後最近有好幾位私信我,向我詢 ...
  • 引言 要是世上不曾存在C++14和C++17該有多好! 是好東西,但是讓編譯器開發者痛不欲生;新標準庫的確好用,但改語法細節未必是明智之舉,尤其是3年一次的頻繁改動。C++帶了太多歷史包袱,我們都是為之買賬的一員。 我沒那麼多精力考慮C++14/17的問題,所以本文基於C++11標準。 知其所以然, ...
  • 0.前言:本次主要是針對第二階段的三次作業的總結,這三次作業主要是抽象、繼承、多態展開的針對性練習,所以在此闡述在練習過程中的問題以及感悟。 1.作業總結 1. 三次作業的難度逐步增加,由淺及深。由繼承再逐步深入到多態以及抽象類的學習。第二階段的第一次作業的前兩題還沒有涉及到繼承,只是加深對單一職責 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...