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

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

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

簡介

快樂在滿足中求,煩惱多從欲中來

記錄程序的點點滴滴。
輸入一個網(wǎng)址從這個網(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 設置請求頭
r = requests.get(url,headers=header) 發(fā)送請求
r.encoding = r.apparent_encoding 設置編碼格式,防止出現(xiàn)亂碼

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

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

下載圖片并存儲

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

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

相關文章

  • Python 中 Elias Delta 編碼詳情

    Python 中 Elias Delta 編碼詳情

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

    MySQL最常見的操作語句小結

    這篇文章主要介紹了MySQL最常見的操作語句小結,與表和庫相關的這些語句是學習MySQL中最基礎的知識,需要的朋友可以參考下
    2015-05-05
  • Tensorflow 查看變量的值方法

    Tensorflow 查看變量的值方法

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

    pandas基礎?Series與Dataframe與numpy對二進制文件輸入輸出

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

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

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

    詳解python的xlwings庫讀寫excel操作總結

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

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

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

    Flask添加路由的三種方法

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

    Python中初始化一個二維數(shù)組及注意事項說明

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

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

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

最新評論

霍山县| 和林格尔县| 凤庆县| 新乡县| 黔南| 土默特右旗| 岳阳县| 龙陵县| 灵台县| 洛浦县| 府谷县| 民乐县| 岱山县| 西丰县| 曲阳县| 长阳| 桃源县| 浠水县| 舒城县| 鹿泉市| 志丹县| 治县。| 吴江市| 兰州市| 上思县| 蚌埠市| 新疆| 宝鸡市| 湘潭市| 石楼县| 凌云县| 枞阳县| 张家口市| 琼结县| 霍山县| 宜君县| 绍兴县| 买车| 建瓯市| 拉孜县| 龙岩市|