1. 程式人生 > >requests與BeautifulSoup爬取網頁圖片

requests與BeautifulSoup爬取網頁圖片

requests+BeautifulSoup爬取網頁圖片


最近一直抽時間在看requests+BeautifulSoup爬取網頁內容這一塊的內容,所以,打算把自己看的總結一下,分享也是一種學醫,給自己做做筆記。


1.首先,我們看一下requests庫
requests庫主要用於訪問網頁,這個網上資源比較多,所以我就不多說了,我這直間給出一個連線,大家可以看看。
快速上手requests
2.BeautifulSoup庫
這個是一個強大的解析工具,它藉助網頁的結構和屬性等特性來解析網頁,而且可以方便的提取網頁的元素,非常好用,入門教程我覺得崔慶才老師的文章很值的學習,給出連結

崔慶才BeautifulSoup
我主要說一下提取元素的技巧,因為我剛開始看的時候沒有注意到這一點;
BeautifulSoup的find_all(‘tag’)方法,是按照tag取出來的tag標籤及其內容。那如何取到標籤的內容,或者子標籤的內容。實際上這還是一個DOM的層級結構問題。
之所有要選取到提取h4標籤,而不是直接find_all(‘a’),是因為網頁上的a標籤很多,一些不是我們所需要提取的內容。

<h1 class="title">
    <a target="111" href="4444">123</a>
</h4>

我隨便寫一個例子,我們要提取a標籤裡面的內容的話,應該這樣做:

links = soup.find_all('h1') 
for link in links:
       print link.a.get_text()
       print link.a['href']

這樣我們成功的提取到了a標籤中href的內容,href 是一種屬性。
這個就是我們使用這兩種庫的時候一個小小的技巧,當然也很重要。

3.我們來爬取一個網頁的圖片的連結
當然,我們獲取了網片的連結,就可以歡快的下載圖片了
我的程式碼的註釋會比較多一些。
在這裡插入圖片描述

程式碼:

import requests
from bs4 import BeautifulSoup
import os
#獲取html
f = requests.get('http://tieba.baidu.com/p/2166231880').text
s = BeautifulSoup(f,'lxml')
s_imgs = s.find_all('img',attrs={'class':'BDE_Image'})
for s_img in s_imgs:
    img_url = s_img['src']
    print(img_url)

這個實現了爬取圖片的url;