使用BeautifulSoup去爬取豆瓣圖片

#要安裝bs4和request,用pip install
from bs4 import BeautifulSoup
import requests
#用request下載網頁圖片
import urllib.request

#放在函數定義
x = 0
#獲取豆瓣圖片
#參數賦值能夠不寫,也能夠傳個默認值1,但不能寫i變量,由於這時i還沒定義,兩個變量相等是不行的
def  getDbImage(page = 1):
    #x = 0
    #獲取網頁源代碼
    #https://www.dbmeinv.com/?pager_offset=3
    response = requests.get('https://www.dbmeinv.com/?pager_offset={}'.format(page))
    html = response.text
    #返回200,說明請求成功
    #print(response)
    #建立對象   用解釋器解釋網頁    也能夠用lxml等
    soup = BeautifulSoup(html,'html.parser')
    #找到全部的img標籤,這個網頁只有咱們要的照片有img標籤,要看網頁狀況
    girl = soup.find_all('img')
    #得到全部img標籤,這是個列表,能夠循環
    #print(girl)
    #循環列表獲得每個標籤
    for img in girl:
        #print(img)
        #得到全部的連接
        link = img.get('src')
        #print(link)
        #x定義在函數內則不須要global,但每次循環x都會變回0,不利於文件命名,在這裏定義成全局變量
        global x
        #下載圖片,也能夠用open,如今換個方法,urlretrieve(檢索)第一個參數爲連接,第二個參數是保存路徑,images文件夾下,後面是文件名
        urllib.request.urlretrieve(link,'images/%s.jpg'%x)
        #每次循環修改文件名,每次遞增1,
        x += 1
        #作個提示
        print('正在下載第%s張圖片'%x)
    
#獲取範圍頁數,好比前10頁
for i in range(1,11):
    print("正在下載第{}頁圖片".format(i))
    #如今對比下網頁翻頁變化,能夠發現後面那個4能夠更改成變量
    #https://www.dbmeinv.com/?pager_offset=3
    #https://www.dbmeinv.com/?pager_offset=4
    getDbImage(i)
    #函數須要變量接受i

除去註釋後簡約版代碼:html

from bs4 import BeautifulSoup
import requests
import urllib.request

x = 0
def  getDbImage(page = 1):
    response = requests.get('https://www.dbmeinv.com/?pager_offset={}'.format(page))
    html = response.text
    soup = BeautifulSoup(html,'html.parser')
    girl = soup.find_all('img')
    for img in girl:
        link = img.get('src')
        global x
        urllib.request.urlretrieve(link,'images/%s.jpg'%x)
        x += 1
        print('正在下載第%s張圖片'%x)
    
for i in range(1,11):
    print("正在下載第{}頁圖片".format(i))
    getDbImage(i)

效果以下:函數

相關文章
相關標籤/搜索