91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么利用python多線程爬取天氣網站圖片并保存

發布時間:2022-03-04 13:55:56 來源:億速云 閱讀:202 作者:小新 欄目:開發技術

這篇文章主要介紹了怎么利用python多線程爬取天氣網站圖片并保存,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

    1.1 題目

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

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

    1.2 思路

    1.2.1 發送請求

    構造請求頭

    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)

    發送請求

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

    1.2.2 解析網頁

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

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

    怎么利用python多線程爬取天氣網站圖片并保存

    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

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

    1.2.4 數據保存 (單線程)

    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)

    怎么利用python多線程爬取天氣網站圖片并保存

    1.2.4 數據保存 (多線程)

    引入多進程模塊

    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

    編寫下載函數

    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多線程爬取天氣網站圖片并保存

    感謝你能夠認真閱讀完這篇文章,希望小編分享的“怎么利用python多線程爬取天氣網站圖片并保存”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    定西市| 星座| 隆德县| 尉氏县| 和静县| 华池县| 正镶白旗| 五河县| 米林县| 台州市| 平凉市| 赣榆县| 谢通门县| 翼城县| 陆河县| 林芝县| 临城县| 昌黎县| 登封市| 祁东县| 枣庄市| 宁阳县| 温州市| 资兴市| 邵阳县| 桐柏县| 抚州市| 龙泉市| 融水| 体育| 商河县| 历史| 石阡县| 潢川县| 鸡泽县| 霍州市| 阆中市| 平邑县| 和田县| 卢湾区| 金川县|