python爬蟲之前端懶加載技術介紹與使用


一、什么是懶加載技術?

  用到的時候再加載,比如查看某個網站的圖片,可視區內只能看到4張圖片,如果需要查看后面的圖片則需要滑動查看。

 

 

 

二、懶加載技術的實現

1、實現方式

<img src2='圖片鏈接'>,即將img標簽的src屬性改為src2,當加載到這個圖片時,才會動態變為src

2、演示說明

(1)如下圖,當前只能看見4張圖片,所以查看第一張圖片代碼時,發現img里面的src2已經變為src了

 

 

(2)查看第五張圖的代碼,發現img標簽里面寫的是src2,因為當時還沒加載到第五章圖片,所以還是src2

 

 

 

(3)因此使用python爬取圖片時,如果想要爬取某個頁面的全部圖片時,屬性應該寫為@src2,而不是@src

 

三、python爬蟲懶加載技術實例

#!/usr/local/bin/python3.7

import urllib.request
import urllib.parse
from lxml import etree
import time
import os


"""
@File    :   meinv_image.py
@Time    :   2020/05/19
@Author  :   Mozili

"""

def handler_request(url, page):
    # 請求頭
    headers = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15'
    } 
    # 區分是否第一頁
    if page ==1:
        url = url.format('')
    else:
        url = url.format(str(page))
    # 創建一個請求
    req = urllib.request.Request(url=url, headers=headers)
    # 發送請求,獲取內容
    cot = urllib.request.urlopen(req).read().decode()
    return cot

def download_image(tree):
    # 定位圖片src
    src_list = tree.xpath("//div[@id='container']/div/div/a/img/@src2")
    # print(src_list)
    # print(len(src_list))
    # 創建文件夾,保存圖片
    dirname = 'Reptile/meinv_images'
    if not os.path.exists(dirname):
        os.mkdir(dirname)

    for img_url in src_list:
        # 獲取圖片名稱
        img_name = os.path.basename(img_url)
        # 圖片保存路徑
        img_path = os.path.join(dirname, img_name)
        # print(img_name)
        # 發送請求下載圖片
        headers = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15'
    } 
        request = urllib.request.Request(url=img_url, headers=headers)
        img = urllib.request.urlopen(request).read()
        # print(img)
        with open(img_path, 'wb') as fp:
            fp.write(img)

if __name__ == "__main__":
    start_page = int(input("請輸入起始頁碼:"))
    end_page = int(input("請輸入結束頁碼:"))
    url = 'http://sc.chinaz.com/tupian/xingganmeinvtupian{}.html'
    for page in range(start_page, end_page+1):
        # 創建請求
        content = handler_request(url, page)
        # 創建對象
        tree = etree.HTML(content)
        # 下載圖片
        download_image(tree)
        time.sleep(2)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM