python 採集鬥圖啦(多線程)

来源:https://www.cnblogs.com/wmc1125/archive/2020/07/29/13399375.html
-Advertisement-
Play Games

import concurrent import requests; from concurrent.futures import ThreadPoolExecutor import os; import parsel; def send_request(url): header = { "user ...


import concurrent
import requests;
from concurrent.futures import ThreadPoolExecutor
import os;
import parsel;

def send_request(url):
    header = {
        "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
    }
    requests.packages.urllib3.disable_warnings()
    response = requests.get(url,headers=header)
    return response
def pare_data(data):
     selector = parsel.Selector(data)
     result_list = selector.xpath('//a[@class="col-xs-6 col-sm-3"]')
     for result in result_list:
        title = result.xpath('./img/@alt').get()
        src_url = result.xpath('./img/@data-original'). get()

        all_title = title+'.'+src_url.split('.')[-1]
        yield all_title,src_url

def save_data(file_name,data):
    dir_name = 'doutu_list'
    if not os.path.exists(dir_name):
        os.mkdir(dir_name)
    with open(dir_name+'/'+file_name,'wb') as f:
        f.write(data)
        print("保存完成:",file_name)


def main(page):
    for page in range(1,page+1):
        print('########################當前為第{}頁########################'.format(page))
        thread_pool = concurrent.futures.ThreadPoolExecutor(max_workers=1)
        res = send_request('https://www.doutula.com/photo/list/?page={}'.format(str(page)))
        src_url = pare_data(res.text)
        for file,url in src_url:
            print(file)
            print(url)
            image_response = send_request(url)
            thread_pool.submit(save_data,file,image_response.content)
        thread_pool.shutdown()

if __name__=='__main__':
    main(1)

高顏值後臺管理系統免費使用 ### 子楓後臺管理系統 ###,可在寶塔面板直接安裝

歡迎關註我的公眾號:子楓的奇妙世界,獲得獨家整理的學習資源和日常乾貨推送。
如果您對我的其他專題內容感興趣,直達我的個人博客:www.wangmingchang.com


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

-Advertisement-
Play Games
更多相關文章
  • 一、反射概述 1. java.lang.Class:是反射的源頭 我們創建一個類,通過編譯,生成對應的.calss文件,之後使用java.exe載入(jvm的類載入器)此.class文件,此.class文件載入到記憶體以後,就是一個運行時類,存在緩存區,那麼這個運行時類的本身就是一個class的實例 ...
  • 真實世界的Python儀器監控》主要探討如何運用Python快速構建自動化儀器控制系統,幫助讀者瞭解如何通過自行開發應用程式來監視或者控制儀器硬體。《真實世界的Python儀器監控》內容涵蓋了從接線到建立介面,直到完成可用軟體的整個過程。本書提供逐步講解、清晰實例,以及將PC連接到各種設備的實踐技巧 ...
  • 精通Python網路爬蟲這是一本實戰性的網路爬蟲秘笈,不僅講解瞭如何編寫爬蟲,而且還講解了流行的網路爬蟲的使用。 點擊此處下載 提取碼:h5nn 全書分為4個部分:第壹部分對網路爬蟲做了概要性的介紹,主要介紹了網路爬蟲的常識和所涉及的技術概覽;第二部分是本書的重點之一,詳細講解了網路爬蟲的核心技術, ...
  • 本篇要學習的內容和知識結構概覽 多態性 編譯時的多態性稱為靜態聯編. 當調用重載函數時, 在編譯期就確定下來調用哪個函數. 運行時的多態性稱為動態聯編. 在運行時才能確定調用哪個函數, 由虛函數來支持. 靜態聯編中的賦值相容性及名字支配規律 派生一個類的原因並非總是為了添加新的成員或成員函數, 有時 ...
  • 摘要 Stream 是對集合對象功能的增強,它專註於對集合對象進行各種非常便利、高效的聚合操作,或者大批量數據操作。通常我們需要多行代碼才能完成的操作,藉助於Stream流式處理可以很簡單的實現。 Stream 不是集合元素,它不是數據結構並不保存數據,它是有關演算法和計算的。 創建Steam流 調用 ...
  • 此pdf文為pycharm最全使用教材,由山在嶺就在博主花了一周多時間嘔心創作~ 點擊此處下載提取碼:fdno ...
  • 點擊此處進入下載地址提取碼:67ju 目 錄第一部分 分類 第 1 章 機器學習基礎 .....................................21.1 何謂機器學習 ............................................3 1.1.1 感測器和海量 ...
  • 阿裡雲購買伺服器 購買雲伺服器,伺服器版本選擇centos 7.5版本,之後在控制台打開實例 2,設置root密碼 如果你購買時沒有設置root密碼 這裡需要重置下 下載軟體並安裝寶塔 本地下載putty 鏈接工具 填入你的公網ip 然後open 賬號填root 密碼就是剛纔設置的那個密碼 然後執行 ...
一周排行
    -Advertisement-
    Play Games
  • 記錄一下Winform程式打包過程 參考文章:VS2017 WinFrom打包設置與教程 下載 Visual Studio Installer 拓展插件 從VS2017開始VS已預設不再集成Installer拓展,所以需要手動下載安裝,在 工具 - 插件和更新 裡面的插件商店裡面搜索"install ...
  • 先下載一個gif圖片,這裡提供一個gif圖片示例 線上GIF圖片幀拆分工具 - UU線上工具 (uutool.cn) 使用這個網站將gif切成單張圖片 創建一個Avalonia MVVM的項目,將圖片copy進去 在項目文件中添加一下代碼: <ItemGroup> <None Update="gif ...
  • 1 簡介 Dapr是一個可移植的、事件驅動的運行時,它使任何開發人員能夠輕鬆構建出彈性的、無狀態和有狀態的應用程式,並可運行在雲平臺或邊緣計算中,它同時也支持多種編程語言和開發框架。Dapr支持的語言很多,包括C++/Go/Java/JavaScript/Python/Rust/.NET/PHP等。 ...
  • 作者:大眼睛圖圖 鏈接:https://juejin.cn/post/7156483709338648613 前言 還有誰?剛上三天班就被公司公司的工作不適合我,叫我先提升一下。 後面我也向公司那邊討要了一個說法,我只能說他們那邊的說辭讓我有些不服氣。 現在之所以把這件事在掘金上記錄一下,一是記錄一 ...
  • 雲原生下的流水線是通過啟動容器來運行具體的功能步驟,每次運行流水線可能會被調度到不同的計算節點上。這會導致一個問題:容器運行完是不會保存數據的,每當流水線重新運行時,又會重新拉取代碼、編譯代碼、下載依賴包等等。在雲原生場景下,不存在本地宿主機編譯代碼、構建鏡像時緩存的作用,大大延長了流水線運行時間,... ...
  • 本文介紹基於Python語言中TensorFlow的tf.estimator介面,實現深度學習神經網路回歸的具體方法。 () 1 寫在前面 1. 本文介紹的是基於TensorFlow tf.estimator介面的深度學習網路,而非TensorFlow 2.0中常用的Keras介面;關於Keras接 ...
  • 基礎 我是在ruoyi-vue已經安裝了mybatis-plus的基礎上進行的修改 關於SQLite SQLite 是一個軟體庫,實現了自給自足的、無伺服器的、零配置的、事務性的 SQL 資料庫引擎。 SQLite主頁:https://www.sqlite.org/index.html 1. pom ...
  • 1. 服務監控三要素^1 服務監控需要滿足的三要素分別如下: 日誌監控 指標監控 請求鏈路追蹤 服務監控只要能滿足這三個要素,基本就能實現我們想要的監控效果。 1.1.主流APM系統^1 APM 系統(Application Performance Management,即應用性能管理)是對企業的應 ...
  • 雙重檢查鎖定與延遲初始化 在 java 程式中,有時候可能需要推遲一些高開銷的對象初始化操作,並且只有在使用這些對象時才進行初始化。此時程式員可能會採用延遲初始化。但要正確實現線程安全的延遲初始化需要一些技巧,否則很容易出現問題。比如,下麵是非線程安全的延遲初始化對象的示例代碼: COPYpubli ...
  • 顧名思義單調棧就是具有單調性的棧 ==常見模型:找出每個數左邊離它最近的比它大/小的數== 【演算法】 int stk[N],tt = 0; // 棧中存數據 for (int i = 1; i <= n; i ++){ int x; cin >> x; while (tt && stk[tt] >= ...