最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 爬取網(wǎng)頁(yè)圖片詳解流程

 更新時(shí)間:2021年11月09日 10:25:05   作者:不俠居  
沒(méi)想到python是如此強(qiáng)大,令人著迷,以前看見(jiàn)圖片總是一張一張復(fù)制粘貼,現(xiàn)在好了,學(xué)會(huì)python就可以用程序?qū)⒁粡垙垐D片,保存下來(lái)。今天網(wǎng)上沖浪看到很多美圖,可是圖片有點(diǎn)多,不想一張一張地復(fù)制粘貼,怎么辦呢?辦法總是有的,即便沒(méi)有我們也可以創(chuàng)造一個(gè)辦法

簡(jiǎn)介

快樂(lè)在滿足中求,煩惱多從欲中來(lái)

記錄程序的點(diǎn)點(diǎn)滴滴。
輸入一個(gè)網(wǎng)址從這個(gè)網(wǎng)址中解析出圖片,并將它保存在本地

流程圖

在這里插入圖片描述

程序分析

解析主網(wǎng)址

def get_urls():
    url = 'http://www.nipic.com/show/35350678.html' # 主網(wǎng)址
    pattern = "(http.*?jpg)"
    header = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
    }
    r = requests.get(url,headers=header)
    r.encoding = r.apparent_encoding
    html = r.text
    urls = re.findall(pattern,html)
    return urls

url 為需要爬的主網(wǎng)址
pattern 為正則匹配
header 設(shè)置請(qǐng)求頭
r = requests.get(url,headers=header) 發(fā)送請(qǐng)求
r.encoding = r.apparent_encoding 設(shè)置編碼格式,防止出現(xiàn)亂碼

屬性 說(shuō)明
r.encoding 從http header中提取響應(yīng)內(nèi)容編碼
r.apparent_encoding 從內(nèi)容中分析出的響應(yīng)內(nèi)容編碼

urls = re.findall(pattern,html) 進(jìn)行正則匹配
re.findall(pattern, string, flags=0)
正則 re.findall 的簡(jiǎn)單用法(返回string中所有與pattern相匹配的全部字串,返回形式為數(shù)組)

下載圖片并存儲(chǔ)

def download(url_queue: queue.Queue()):
    while True:
        url = url_queue.get()
        root_path = 'F:\\1\\' # 圖片存放的文件夾位置
        file_path = root_path + url.split('/')[-1] #圖片存放的具體位置
        try:
            if not os.path.exists(root_path): # 判斷文件夾是是否存在,不存在則創(chuàng)建一個(gè)
                os.makedirs(root_path)
            if not os.path.exists(file_path): # 判斷文件是否已存在
                r = requests.get(url)
                with open(file_path,'wb') as f:
                    f.write(r.content)
                    f.close()
                    print('圖片保存成功')
            else:
                print('圖片已經(jīng)存在')
        except Exception as e:
            print(e)
        print('線程名: ', threading.current_thread().name,"url_queue.size=", url_queue.qsize())

此函數(shù)需要傳一個(gè)參數(shù)為隊(duì)列
queue模塊中提供了同步的、線程安全的隊(duì)列類,queue.Queue()為一種先入先出的數(shù)據(jù)類型,隊(duì)列實(shí)現(xiàn)了鎖原語(yǔ),能夠在多線程中直接使用。可以使用隊(duì)列來(lái)實(shí)現(xiàn)線程間的同步。
url_queue: queue.Queue() 這是一個(gè)隊(duì)列類型的數(shù)據(jù),是用來(lái)存儲(chǔ)圖片URL
url = url_queue.get() 從隊(duì)列中取出一個(gè)url
url_queue.qsize() 返回隊(duì)形內(nèi)元素個(gè)數(shù)

全部代碼

import requests
import re
import os
import threading
import queue
def get_urls():
    url = 'http://www.nipic.com/show/35350678.html' # 主網(wǎng)址
    pattern = "(http.*?jpg)"
    header = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36'
    }
    r = requests.get(url,headers=header)
    r.encoding = r.apparent_encoding
    html = r.text
    urls = re.findall(pattern,html)
    return urls
def download(url_queue: queue.Queue()):
    while True:
        url = url_queue.get()
        root_path = 'F:\\1\\' # 圖片存放的文件夾位置
        file_path = root_path + url.split('/')[-1] #圖片存放的具體位置
        try:
            if not os.path.exists(root_path):
                os.makedirs(root_path)
            if not os.path.exists(file_path):
                r = requests.get(url)
                with open(file_path,'wb') as f:
                    f.write(r.content)
                    f.close()
                    print('圖片保存成功')
            else:
                print('圖片已經(jīng)存在')
        except Exception as e:
            print(e)
        print('線程名:', threading.current_thread().name,"圖片剩余:", url_queue.qsize())

if __name__ == "__main__":
	url_queue = queue.Queue()
	urls = tuple(get_urls())
	for i in urls:
	    url_queue.put(i)
	t1 = threading.Thread(target=download,args=(url_queue,),name="craw{}".format('1'))
	t2 = threading.Thread(target=download,args=(url_queue,),name="craw{}".format('2'))
	
	t1.start()
	t2.start()

到此這篇關(guān)于Python 爬取網(wǎng)頁(yè)圖片詳解流程的文章就介紹到這了,更多相關(guān)Python 爬取網(wǎng)頁(yè)圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 中 Elias Delta 編碼詳情

    Python 中 Elias Delta 編碼詳情

    這篇文章主要介紹了Python 中 Elias Delta 編碼,下面的文章我們將使用 python 實(shí)現(xiàn) Elias Delta 編碼。具體詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • MySQL最常見(jiàn)的操作語(yǔ)句小結(jié)

    MySQL最常見(jiàn)的操作語(yǔ)句小結(jié)

    這篇文章主要介紹了MySQL最常見(jiàn)的操作語(yǔ)句小結(jié),與表和庫(kù)相關(guān)的這些語(yǔ)句是學(xué)習(xí)MySQL中最基礎(chǔ)的知識(shí),需要的朋友可以參考下
    2015-05-05
  • Tensorflow 查看變量的值方法

    Tensorflow 查看變量的值方法

    今天小編就為大家分享一篇Tensorflow 查看變量的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • pandas基礎(chǔ)?Series與Dataframe與numpy對(duì)二進(jìn)制文件輸入輸出

    pandas基礎(chǔ)?Series與Dataframe與numpy對(duì)二進(jìn)制文件輸入輸出

    這篇文章主要介紹了pandas基礎(chǔ)Series與Dataframe與numpy對(duì)二進(jìn)制文件輸入輸出,series是一種一維的數(shù)組型對(duì)象,它包含了一個(gè)值序列和一個(gè)數(shù)據(jù)標(biāo)簽
    2022-07-07
  • python分析作業(yè)提交情況

    python分析作業(yè)提交情況

    這篇文章主要為大家詳細(xì)介紹了python分析作業(yè)提交情況,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 詳解python的xlwings庫(kù)讀寫excel操作總結(jié)

    詳解python的xlwings庫(kù)讀寫excel操作總結(jié)

    這篇文章主要介紹了詳解python的xlwings庫(kù)讀寫excel操作總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • python在協(xié)程中增加任務(wù)實(shí)例操作

    python在協(xié)程中增加任務(wù)實(shí)例操作

    在本篇文章里小編給大家整理的是一篇關(guān)于python在協(xié)程中增加任務(wù)實(shí)例操作內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-02-02
  • Flask添加路由的三種方法

    Flask添加路由的三種方法

    Flask 是一個(gè)流行的 Python Web 框架,它提供了多種方法來(lái)添加路由,本文詳細(xì)的介紹了Flask添加路由的三種方法,感興趣的可以了解一下
    2023-11-11
  • Python中初始化一個(gè)二維數(shù)組及注意事項(xiàng)說(shuō)明

    Python中初始化一個(gè)二維數(shù)組及注意事項(xiàng)說(shuō)明

    這篇文章主要介紹了Python中初始化一個(gè)二維數(shù)組及注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python中字典常用操作的示例詳解

    Python中字典常用操作的示例詳解

    字典是Python必用且常用的數(shù)據(jù)結(jié)構(gòu),本文主要為大家梳理了一下常用的字典操作:初始化、合并字典、字典轉(zhuǎn)Pandas等,需要的可以參考一下
    2022-05-05

最新評(píng)論

抚顺县| 昆明市| 新闻| 武鸣县| 家居| 宝山区| 沂源县| 泾阳县| 红桥区| 太仓市| 松江区| 垣曲县| 霍城县| 碌曲县| 白水县| 南江县| 景德镇市| 陕西省| 新兴县| 桑植县| 封丘县| 无棣县| 兴城市| 乌恰县| 江门市| 溧水县| 宜川县| 新建县| 治多县| 鲁山县| 星座| 万年县| 平江县| 芜湖市| 宜君县| 岳西县| 民丰县| 全椒县| 六枝特区| 永靖县| 彰武县|