1. 程式人生 > >python3爬蟲爬取網頁圖片簡單示例

python3爬蟲爬取網頁圖片簡單示例

   本人也是剛剛開始學習python的爬蟲技術,然後本來想在網上找點教程來看看,誰知道一搜索,大部分的都是用python2來寫的,新手嘛,一般都喜歡裝新版本。於是我也就寫一個python3簡單的爬蟲,爬蟲一下貼吧的圖片吧。話不多說,我們開始。

首先簡單來說說一下知識。

一、什麼是爬蟲?

網頁上面採集資料

二、學習爬蟲有什麼作用?

做案例分析,做資料分析,分析網頁結構.......

三、爬蟲環境

需求:python3x  pycharm

模組:urllib 、urllib2、bs4、re

四、爬蟲思路:

1.      開啟網頁,獲取原始碼。

*由於多人同時爬蟲某個網站時候,會造成資料冗餘,網站崩潰,所以一些網站是禁止爬蟲的,會返回403拒絕訪問的錯誤資訊。----獲取不到想要的內容/請求失敗/IP容易被封……..等

*解決辦法:偽裝——不告訴網站我是一個指令碼,告訴它我是一個瀏覽器。(加上隨便一個瀏覽器的頭部資訊,偽裝成瀏覽器),由於是簡單例子,那我們就不搞這些騷操作了。

2.     獲取圖片

*Find函式 :只去找第一個目標,查詢一次

*Find_all函式: 找到所有的相同的目標。

這裡可能有一個解析器的問題,我們也不說了,出問題的同學百度一堆解決辦法。

3.      儲存圖片地址與下載圖片

*a.使用urlib---urlretrieve下載(儲存位置:如果儲存在跟*.py檔案同一個地方,那麼只需要資料夾名稱即可,如果是其他地方,那麼得寫絕對路徑。)

算了,不說那麼多廢話,既然是個簡單例子,那我就直接貼程式碼吧。相信也沒多少人呢看不懂。

提一句:用BeautifulSoup 就可以不用正則;爬蟲用正則,Bs4, xpath三種 選擇一個就好。當然也可以混合使用,也還有其他種。

爬取地址:http://tieba.baidu.com/p/3840085725

程式碼如下:

import urllib.request
import re
import os
import urllib

#根據給定的網址來獲取網頁詳細資訊,得到的html就是網頁的原始碼
def getHtml(url):
    page = urllib.request.urlopen(url)
    html = page.read()
    return html.decode('UTF-8')

def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg)                              #轉換成一個正則物件
    imglist = imgre.findall(html)                        #表示在整個網頁中過濾出所有圖片的地址,放在imglist中

    x = 0                                                #宣告一個變數賦值
    path = 'H:\\python lianxi\\zout_pc5\\test'           #設定儲存地址


    if not os.path.isdir(path):
        os.makedirs(path)                                          # 將圖片儲存到H:..\\test資料夾中,如果沒有test資料夾則建立
    paths = path+'\\'                                              #儲存在test路徑下

    for imgurl in imglist:

        urllib.request.urlretrieve(imgurl,'{0}{1}.jpg'.format(paths,x))               #開啟imglist,下載圖片儲存在本地,
                                           #format格式化字串
        x = x + 1
        print('圖片已開始下載,注意檢視資料夾')
    return imglist

html = getHtml("http://tieba.baidu.com/p/3840085725")         #獲取該網址網頁詳細資訊,html就是網頁的原始碼
print (getImg(html))                                          #從網頁原始碼中分析並下載儲存圖片

最後效果如圖:


好了,教程到這裡就結束了,更多精彩,敬請關注:IT民工_柒曉白

參考地址:https://my.oschina.net/zouqxb/blog/1553586

(ps:對於python本人也是新手,文章有任何錯誤請多多包涵)