爬取百度貼吧圖片(表情包)

  我們在瀏覽百度貼吧時,會看到許多“神圖”,我們想要保存,這個時候我們就會下載到本地,當我們學習了爬蟲之後,就沒有必要一個一個下載了,可以使用爬蟲自動下載全部圖片。

  下面隨便指定一個貼吧頁:http://tieba.baidu.com/p/3242594565,爬取頁面上的圖片。首先對這個帖子進行觀察,我們會發現這個帖子有許多頁,所以就可以使用pn=%d的方法來爬取後面頁數的帖子,然後想到爬取圖片需要機芯進行命名,並把它們保存在本地

 

查看一下要爬取的網址信息:http://tieba.baidu.com/p/3242594565

看下界面,發現有14頁

然後找到要爬取的圖片,查看圖片的地址信息。

這裏可以看到圖片地址爲:https://imgsa.baidu.com/forum/w%3D580/sign=998a3367c98065387beaa41ba7dca115/6c751b0fd9f9d72a6ac0a634d72a2834349bbb28.jpg

可以使用正則表達式進行爬取 ,可以使用https://imgsa.*?\.jpg的格式。

 

 

然後就是編寫代碼進行爬取了,這裏的思路是:

  先獲得網頁的代碼,然後通過網頁代碼獲取圖片,再將圖片命名保存就可以了。

 代碼如下:

import re
import urllib.request


#獲取網址信息
def getHtml(url):        
    page = urllib.request.urlopen(url)
    html = page.read()
    return html

#爬取圖片
def getImg(html):        
    reg = r'src="(https://imgsa.*?\.jpg)"'
    imgre = re.compile(reg)
    imList = re.findall(reg, html.decode('utf-8'))

    #爬取圖片命名
    x=0
    for i in imList:
        print(i)
        print(x)
        urllib.request.urlretrieve(i, '%s.jpg' % x)
        x += 1


#爬取的貼吧網址
url = "http://tieba.baidu.com/p/3242594565?pn="    

#由於貼吧有14頁,爬取的圖片較多,這裏先爬取一個網址的圖片,圖片保存在當前文件夾裏
for k in range(1, 2):    
    ul = url+str(k)
    print(ul)
    html = getHtml(ul)
    getImg(html)

在Pycharm上運行代碼:

 

 

 查看文件夾,發現新增了下載的圖片,並且都已經命名:

 這樣就成功爬取了貼吧上的圖片。

 

 

 

 

 

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