亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何利用python多線程爬取天氣網(wǎng)站圖片并保存

 更新時間:2021年11月09日 14:26:28   作者:小生凡一  
最近做個天 氣方面的APP需要用到一些天氣數(shù)據(jù),所以下面這篇文章主要給大家介紹了關于如何利用python多線程爬取天氣網(wǎng)站圖片并保存的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

1.1 題目

指定一個網(wǎng)站,爬取這個網(wǎng)站中的所有的所有圖片,例如中國氣象網(wǎng)(www.weather.com.cn),分別使用單線程和多線程的方式爬取。(限定爬取圖片數(shù)量為學號后3位)

輸出信息: 將下載的Url信息在控制臺輸出,并將下載的圖片存儲在images子文件中,并給出截圖。

1.2 思路

1.2.1 發(fā)送請求

構造請求頭

import requests,re
import urllib

headers = {
    'Connection': 'keep-alive',
    'Cache-Control': 'max-age=0',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}

url = "http://www.weather.com.cn/"
request = urllib.request.Request(url, headers=headers)

發(fā)送請求

request = urllib.request.Request(url, headers=headers)
r = urllib.request.urlopen(request)

1.2.2 解析網(wǎng)頁

頁面解析,并且替換回車,方便后續(xù)進行正則匹配圖片。

html = r.read().decode().replace('\n','')

1.2.3 獲取結點

使用正則匹配,先獲取所有的a標簽,然后爬取a標簽下面的所有圖片

urlList = re.findall('<a href="(.*?)" ',html,re.S)

獲取所有的圖片

allImageList = []
for k in urlList:
    try:
        request = urllib.request.Request(k, headers=headers)
        r = urllib.request.urlopen(request)
        html = r.read().decode().replace('\n','')
        imgList = re.findall(r'<img.*?src="(.*?)"', html, re.S)
        allImageList+=imgList
    except Exception as e:
        pass

這里的請求其實也是要用多線程爬取的,所有后續(xù)會補上!

1.2.4 數(shù)據(jù)保存 (單線程)

for i, img in enumerate(allImageList[:102]):
    print(f"正在保存第{i + 1}張圖片 路徑:{img}")
    resp = requests.get(img)
    with open(f'./image/{img.split("/")[-1]}', 'wb') as f:  # 保存到這個image路徑下
        f.write(resp.content)

1.2.4 數(shù)據(jù)保存 (多線程)

引入多進程模塊

import threading
# 多線程
def download_imgs(imgList,limit):
    threads = []
    T = [
        threading.Thread(target = download, args=(url,i))
        for i, url in enumerate(imgList[:limit + 1])
    ]
    for t in T:
        t.start()
        threads.append(t)
    return threads

編寫下載函數(shù)

def download(img_url,name):
    resp = requests.get(img_url)
    try:
        resp = requests.get(img_url)
        with open(f'./images/{name}.jpg', 'wb') as f:
                f.write(resp.content)
    except Exception as e:
        print(f"下載失敗: {name} {img_url} -> {e}")
    else:
        print(f"下載完成: {name} {img_url}")

就很隨機

總結

到此這篇關于如何利用python多線程爬取天氣網(wǎng)站圖片并保存的文章就介紹到這了,更多相關python爬取天氣網(wǎng)站圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python接口自動化淺析數(shù)據(jù)驅動原理

    Python接口自動化淺析數(shù)據(jù)驅動原理

    這篇文章主要介紹了Python接口自動化淺析數(shù)據(jù)驅動原理,文中會詳細描述怎樣使用openpyxl模塊操作excel及結合ddt來實現(xiàn)數(shù)據(jù)驅動,有需要的朋友可以參考下
    2021-08-08
  • 在Django的模型中添加自定義方法的示例

    在Django的模型中添加自定義方法的示例

    這篇文章主要介紹了在Django的模型中添加自定義方法的示例,Django是Python豐富多彩的web開發(fā)框架中最具人氣的一個,需要的朋友可以參考下
    2015-07-07
  • TensorFlow卷積神經(jīng)網(wǎng)絡MNIST數(shù)據(jù)集實現(xiàn)示例

    TensorFlow卷積神經(jīng)網(wǎng)絡MNIST數(shù)據(jù)集實現(xiàn)示例

    這篇文章主要介紹了TensorFlow卷積神經(jīng)網(wǎng)絡MNIST數(shù)據(jù)集的實現(xiàn)示例的過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • 在Django中使用ElasticSearch

    在Django中使用ElasticSearch

    這篇文章主要介紹了在Django中使用ElasticSearch,Elasticsearch是基于Lucene庫的搜索引擎。它提供了具有HTTP?Web界面和無模式JSON文檔的分布式,多租戶功能的全文本搜索引擎,下面詳細內(nèi)容,需要的朋友可以參考一下
    2022-01-01
  • python實現(xiàn)掃描局域網(wǎng)指定網(wǎng)段ip的方法

    python實現(xiàn)掃描局域網(wǎng)指定網(wǎng)段ip的方法

    這篇文章主要介紹了python實現(xiàn)掃描局域網(wǎng)指定網(wǎng)段ip的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • Python識別快遞條形碼及Tesseract-OCR使用詳解

    Python識別快遞條形碼及Tesseract-OCR使用詳解

    這篇文章主要介紹了Python識別快遞條形碼及Tesseract-OCR使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python?Django實現(xiàn)增刪改查實戰(zhàn)代碼

    python?Django實現(xiàn)增刪改查實戰(zhàn)代碼

    這篇文章主要介紹了python?Django增刪改查快速體驗,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Python3enumrate和range對比及示例詳解

    Python3enumrate和range對比及示例詳解

    這篇文章主要介紹了Python3enumrate和range對比及示例詳解,在Python中,enumrate和range都常用于for循環(huán)中,enumrate函數(shù)用于同時循環(huán)列表和元素,而range()函數(shù)可以生成數(shù)值范圍變化的列表,而能夠用于for循環(huán)即都是可迭代的,需要的朋友可以參考下
    2019-07-07
  • 解決python 文本過濾和清理問題

    解決python 文本過濾和清理問題

    文本過濾和清理所涵蓋的范圍非常廣泛,涉及文本解析和數(shù)據(jù)處理方面的問題。這篇文章主要介紹了解決python 文本過濾和清理問題,需要的朋友可以參考下
    2019-08-08
  • Python?使用pip在windows命令行中安裝HDF?reader包的操作方法

    Python?使用pip在windows命令行中安裝HDF?reader包的操作方法

    HDF reader包是一個常用來將.mat類型數(shù)據(jù)導入到python在這里插入代碼片中使用的包,非常好用,今天介紹一下,如何在命令行中安裝這個包,需要的朋友可以參考下
    2022-12-12

最新評論