Python簡單實現圖片爬取功能

1. 需求

爬取貼吧的圖片,保存在本地。

2. 實例

使用urllib模塊請求網絡,通過正則匹配圖片網址。

# -*- coding: utf-8 -*-
import re   # re模塊主要包含了正則表達式
import urllib.request
from urllib import request  # urllib模塊提供了讀取Web頁面數據的接口

# 定義一個getHtml()函數
def getSuperHtmlCode(url):
    print('start-getsuperhtml')
    with request.urlopen(url) as f:
        data = f.read()
        print('Status:', f.status, f.reason)
        for k, v in f.getheaders():
            print('%s: %s' % (k, v))
        print('Data:', data.decode('utf-8'))
        return data

# 定義一個getHtml函數
def getHtml(url):
    print('start-gethtml')
    page = urllib.request.urlopen(url)  # urllib.request.urlopen()方法用於打開一個URL地址
    html = page.read()  # read()方法用於讀取URL上的數據
    return html

# 圖片下載
def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'  # 正則表達式,得到圖片地址
    imgre = re.compile(reg)  # re.compile() 可以把正則表達式編譯成一個正則表達式對象.
    html = html.decode('utf-8')  # python3
    imglist = re.findall(imgre, html)  # re.findall() 方法讀取html 中包含 imgre(正則表達式)的數據
    # 把篩選的圖片地址通過for循環遍歷並保存到本地
    # 核心是urllib.request.urlretrieve()方法,直接將遠程數據下載到本地,圖片通過x依次遞增命名
    x = 0
    for imgurl in imglist:
        urllib.request.urlretrieve(imgurl, 'G:\download\%s.jpg' % x)
        x += 1

if __name__ == '__main__':
    html = getSuperHtmlCode("https://tieba.baidu.com/p/2555125530")
    print('html:', html)
    print(getImg(html))

運行結果:

參考資料 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章